{"action":"created","issue":{"url":"https://api.github.com/repos/0xProject/0x-mesh/issues/170","repository_url":"https://api.github.com/repos/0xProject/0x-mesh","labels_url":"https://api.github.com/repos/0xProject/0x-mesh/issues/170/labels{/name}","comments_url":"https://api.github.com/repos/0xProject/0x-mesh/issues/170/comments","events_url":"https://api.github.com/repos/0xProject/0x-mesh/issues/170/events","html_url":"https://github.com/0xProject/0x-mesh/issues/170","id":456478285,"node_id":"MDU6SXNzdWU0NTY0NzgyODU=","number":170,"title":"rpc: ensure WS server/client supports ping/pong protocol","user":{"login":"fabioberger","id":2151492,"node_id":"MDQ6VXNlcjIxNTE0OTI=","avatar_url":"https://avatars2.githubusercontent.com/u/2151492?v=4","gravatar_id":"","url":"https://api.github.com/users/fabioberger","html_url":"https://github.com/fabioberger","followers_url":"https://api.github.com/users/fabioberger/followers","following_url":"https://api.github.com/users/fabioberger/following{/other_user}","gists_url":"https://api.github.com/users/fabioberger/gists{/gist_id}","starred_url":"https://api.github.com/users/fabioberger/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fabioberger/subscriptions","organizations_url":"https://api.github.com/users/fabioberger/orgs","repos_url":"https://api.github.com/users/fabioberger/repos","events_url":"https://api.github.com/users/fabioberger/events{/privacy}","received_events_url":"https://api.github.com/users/fabioberger/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"albrow","id":800857,"node_id":"MDQ6VXNlcjgwMDg1Nw==","avatar_url":"https://avatars3.githubusercontent.com/u/800857?v=4","gravatar_id":"","url":"https://api.github.com/users/albrow","html_url":"https://github.com/albrow","followers_url":"https://api.github.com/users/albrow/followers","following_url":"https://api.github.com/users/albrow/following{/other_user}","gists_url":"https://api.github.com/users/albrow/gists{/gist_id}","starred_url":"https://api.github.com/users/albrow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/albrow/subscriptions","organizations_url":"https://api.github.com/users/albrow/orgs","repos_url":"https://api.github.com/users/albrow/repos","events_url":"https://api.github.com/users/albrow/events{/privacy}","received_events_url":"https://api.github.com/users/albrow/received_events","type":"User","site_admin":false},"assignees":[{"login":"albrow","id":800857,"node_id":"MDQ6VXNlcjgwMDg1Nw==","avatar_url":"https://avatars3.githubusercontent.com/u/800857?v=4","gravatar_id":"","url":"https://api.github.com/users/albrow","html_url":"https://github.com/albrow","followers_url":"https://api.github.com/users/albrow/followers","following_url":"https://api.github.com/users/albrow/following{/other_user}","gists_url":"https://api.github.com/users/albrow/gists{/gist_id}","starred_url":"https://api.github.com/users/albrow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/albrow/subscriptions","organizations_url":"https://api.github.com/users/albrow/orgs","repos_url":"https://api.github.com/users/albrow/repos","events_url":"https://api.github.com/users/albrow/events{/privacy}","received_events_url":"https://api.github.com/users/albrow/received_events","type":"User","site_admin":false},{"login":"fabioberger","id":2151492,"node_id":"MDQ6VXNlcjIxNTE0OTI=","avatar_url":"https://avatars2.githubusercontent.com/u/2151492?v=4","gravatar_id":"","url":"https://api.github.com/users/fabioberger","html_url":"https://github.com/fabioberger","followers_url":"https://api.github.com/users/fabioberger/followers","following_url":"https://api.github.com/users/fabioberger/following{/other_user}","gists_url":"https://api.github.com/users/fabioberger/gists{/gist_id}","starred_url":"https://api.github.com/users/fabioberger/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fabioberger/subscriptions","organizations_url":"https://api.github.com/users/fabioberger/orgs","repos_url":"https://api.github.com/users/fabioberger/repos","events_url":"https://api.github.com/users/fabioberger/events{/privacy}","received_events_url":"https://api.github.com/users/fabioberger/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/0xProject/0x-mesh/milestones/1","html_url":"https://github.com/0xProject/0x-mesh/milestone/1","labels_url":"https://api.github.com/repos/0xProject/0x-mesh/milestones/1/labels","id":4341643,"node_id":"MDk6TWlsZXN0b25lNDM0MTY0Mw==","number":1,"title":"Beta Release","description":"In it's current state, 0x Mesh is a P2P node that stores, validates, and shares 0x orders.- It uses FloodSub as a pubsub mechanism. (1) It has a WebSocket endpoint for submitting 0x orders to the network, (2) It performs 0x order validation and orderbook pruning. (3) All relevant state is persisted to disk so that the node can trivially restart from where it left off after a crash. Before the beta can be considered complete, we must still add (1) Peer discovery (currently you must manually add new peers). (2) WeijieSub (a more incentive-compatible and more efficient pubsub mechanism). (3) A way to subscribe to order events via the WebSocket API. (4) Tracking ETH reserves for orders stored (we have already implemented efficient ETH balance updating; it's just not currently used when storing orders). (5) Full browser support (some components are already browser-ready, but others are not).","creator":{"login":"fabioberger","id":2151492,"node_id":"MDQ6VXNlcjIxNTE0OTI=","avatar_url":"https://avatars2.githubusercontent.com/u/2151492?v=4","gravatar_id":"","url":"https://api.github.com/users/fabioberger","html_url":"https://github.com/fabioberger","followers_url":"https://api.github.com/users/fabioberger/followers","following_url":"https://api.github.com/users/fabioberger/following{/other_user}","gists_url":"https://api.github.com/users/fabioberger/gists{/gist_id}","starred_url":"https://api.github.com/users/fabioberger/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fabioberger/subscriptions","organizations_url":"https://api.github.com/users/fabioberger/orgs","repos_url":"https://api.github.com/users/fabioberger/repos","events_url":"https://api.github.com/users/fabioberger/events{/privacy}","received_events_url":"https://api.github.com/users/fabioberger/received_events","type":"User","site_admin":false},"open_issues":12,"closed_issues":26,"state":"open","created_at":"2019-05-23T10:40:00Z","updated_at":"2019-06-18T02:47:23Z","due_on":"2019-06-30T07:00:00Z","closed_at":null},"comments":0,"created_at":"2019-06-15T00:09:23Z","updated_at":"2019-06-18T15:22:21Z","closed_at":null,"author_association":"CONTRIBUTOR","body":"In order to allow Mesh WS clients to know if their connection to the server has been disrupted, we want to make sure that the WS server we are using supports the [ping and pong frames](https://tools.ietf.org/html/rfc6455#section-5.5.2) specified by the WebSocket specification. \r\n\r\nAdditionally, we want to make sure that popular WS clients in Golang, Javascript and Python also support them. If not, we will need to add explicit support for ping/pong to our JSON/RPC API implementation."},"comment":{"url":"https://api.github.com/repos/0xProject/0x-mesh/issues/comments/503184775","html_url":"https://github.com/0xProject/0x-mesh/issues/170#issuecomment-503184775","issue_url":"https://api.github.com/repos/0xProject/0x-mesh/issues/170","id":503184775,"node_id":"MDEyOklzc3VlQ29tbWVudDUwMzE4NDc3NQ==","user":{"login":"fabioberger","id":2151492,"node_id":"MDQ6VXNlcjIxNTE0OTI=","avatar_url":"https://avatars2.githubusercontent.com/u/2151492?v=4","gravatar_id":"","url":"https://api.github.com/users/fabioberger","html_url":"https://github.com/fabioberger","followers_url":"https://api.github.com/users/fabioberger/followers","following_url":"https://api.github.com/users/fabioberger/following{/other_user}","gists_url":"https://api.github.com/users/fabioberger/gists{/gist_id}","starred_url":"https://api.github.com/users/fabioberger/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fabioberger/subscriptions","organizations_url":"https://api.github.com/users/fabioberger/orgs","repos_url":"https://api.github.com/users/fabioberger/repos","events_url":"https://api.github.com/users/fabioberger/events{/privacy}","received_events_url":"https://api.github.com/users/fabioberger/received_events","type":"User","site_admin":false},"created_at":"2019-06-18T15:22:21Z","updated_at":"2019-06-18T15:22:21Z","author_association":"CONTRIBUTOR","body":"Update: Looks like the WebSocket library used by `go-ethereum`s rpc implementation (and therefore Mesh's) will respond to ping frames with a pong response but never send pings itself: https://github.com/golang/go/issues/5958. Therefore it's up to clients to send ping frames on a regular interval. \r\n\r\nNext steps: Check for the prevalence of ping support in WS clients in Go, JS & Python."}}
{"actor":{"display_login":"fabioberger"}}