{"action":"created","issue":{"url":"https://api.github.com/repos/rethinkdb/rethinkdb/issues/3510","labels_url":"https://api.github.com/repos/rethinkdb/rethinkdb/issues/3510/labels{/name}","comments_url":"https://api.github.com/repos/rethinkdb/rethinkdb/issues/3510/comments","events_url":"https://api.github.com/repos/rethinkdb/rethinkdb/issues/3510/events","html_url":"https://github.com/rethinkdb/rethinkdb/issues/3510","id":53594073,"number":3510,"title":"Add websockets interface to the webui/server","user":{"login":"deontologician","id":1366,"avatar_url":"https://avatars.githubusercontent.com/u/1366?v=3","gravatar_id":"","url":"https://api.github.com/users/deontologician","html_url":"https://github.com/deontologician","followers_url":"https://api.github.com/users/deontologician/followers","following_url":"https://api.github.com/users/deontologician/following{/other_user}","gists_url":"https://api.github.com/users/deontologician/gists{/gist_id}","starred_url":"https://api.github.com/users/deontologician/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/deontologician/subscriptions","organizations_url":"https://api.github.com/users/deontologician/orgs","repos_url":"https://api.github.com/users/deontologician/repos","events_url":"https://api.github.com/users/deontologician/events{/privacy}","received_events_url":"https://api.github.com/users/deontologician/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/rethinkdb/rethinkdb/milestones/2","labels_url":"https://api.github.com/repos/rethinkdb/rethinkdb/milestones/2/labels","id":211054,"number":2,"title":"backlog","description":"Issues in this milestone are not an immediate priority, and will be periodically revisited. When we decide to work on an issue in backlog, we'll move it to next.","creator":{"login":"coffeemug","id":48436,"avatar_url":"https://avatars.githubusercontent.com/u/48436?v=3","gravatar_id":"","url":"https://api.github.com/users/coffeemug","html_url":"https://github.com/coffeemug","followers_url":"https://api.github.com/users/coffeemug/followers","following_url":"https://api.github.com/users/coffeemug/following{/other_user}","gists_url":"https://api.github.com/users/coffeemug/gists{/gist_id}","starred_url":"https://api.github.com/users/coffeemug/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/coffeemug/subscriptions","organizations_url":"https://api.github.com/users/coffeemug/orgs","repos_url":"https://api.github.com/users/coffeemug/repos","events_url":"https://api.github.com/users/coffeemug/events{/privacy}","received_events_url":"https://api.github.com/users/coffeemug/received_events","type":"User","site_admin":false},"open_issues":373,"closed_issues":3,"state":"open","created_at":"2012-11-11T14:16:11Z","updated_at":"2015-01-07T03:39:27Z","due_on":null,"closed_at":null},"comments":3,"created_at":"2015-01-07T03:36:20Z","updated_at":"2015-01-07T19:39:45Z","closed_at":null,"body":"This will make it much easier/cleaner for the webui to listen to changefeeds on the admin tables. It has the downside of needing a websockets implementation on the server. I think a custom implementation of a standard protocol is better than the custom implementation of a custom protocol, but it would be potentially a lot of work unless there's a library we could bend into shape. In addition, the abstraction of socket -> websocket is probably closer than what we have now to adapt the js driver to talk to the http connection (i.e. we could dump a lot of code in the js driver) There was an issue about removing the http connection stuff from the js driver that I can't find at the moment.\r\n\r\n[Implementing the websockets protocol from MDN](https://developer.mozilla.org/en-US/docs/WebSockets/Writing_WebSocket_servers)\r\n"},"comment":{"url":"https://api.github.com/repos/rethinkdb/rethinkdb/issues/comments/69078717","html_url":"https://github.com/rethinkdb/rethinkdb/issues/3510#issuecomment-69078717","issue_url":"https://api.github.com/repos/rethinkdb/rethinkdb/issues/3510","id":69078717,"user":{"login":"danielmewes","id":505365,"avatar_url":"https://avatars.githubusercontent.com/u/505365?v=3","gravatar_id":"","url":"https://api.github.com/users/danielmewes","html_url":"https://github.com/danielmewes","followers_url":"https://api.github.com/users/danielmewes/followers","following_url":"https://api.github.com/users/danielmewes/following{/other_user}","gists_url":"https://api.github.com/users/danielmewes/gists{/gist_id}","starred_url":"https://api.github.com/users/danielmewes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/danielmewes/subscriptions","organizations_url":"https://api.github.com/users/danielmewes/orgs","repos_url":"https://api.github.com/users/danielmewes/repos","events_url":"https://api.github.com/users/danielmewes/events{/privacy}","received_events_url":"https://api.github.com/users/danielmewes/received_events","type":"User","site_admin":false},"created_at":"2015-01-07T19:39:45Z","updated_at":"2015-01-07T19:39:45Z","body":"@joaojeronimo Thanks for the suggestion and link.\r\nI think part of @deontologician 's goal is to make the protocol used by the web UI to connect to the server more similar to the protocol we use for regular clients. With websockets we might need less specialized code in the JavaScript driver for dealing with tunnelling our protocol over HTTP connections. My feeling is that server sent events would actually be further away from our regular client protocol, which is generally based on request/response pairs.\r\nNonetheless it might still make sense for the special case of changefeeds if there are other benefits."}}