# HG changeset patch # User Drew Perttula # Date 2016-06-05 03:39:39 # Node ID 6044e527d795c455643378aa9c445efb6ee05217 # Parent 36f58b2aa8ef0cd3e7b541eae81cb4b776300a2b ping loop (and some lines from the next patch). My setup seemed to be dropping WS after like 30 sec. Ignore-this: 7d2150afcf21628882d78914898c04d4 diff --git a/bin/rdfdb b/bin/rdfdb --- a/bin/rdfdb +++ b/bin/rdfdb @@ -417,6 +417,9 @@ class WebsocketClient(cyclone.websocket. Failure(WebsocketDisconnect(reason)), self.wsClient) def messageReceived(self, message): + if message == 'PING': + self.sendMessage('PONG') + return log.info("got message from %r: %s", self.wsClient, message) p = Patch(jsonRepr=message) p.senderUpdateUri = self.wsClient.updateUri diff --git a/light9/web/graph.coffee b/light9/web/graph.coffee --- a/light9/web/graph.coffee +++ b/light9/web/graph.coffee @@ -77,6 +77,8 @@ class window.SyncedGraph @ws.onopen = => log('connected to', fullUrl) + @resetStore() + @pingLoop() @ws.onerror = (e) => log('ws error ' + e) @@ -85,8 +87,17 @@ class window.SyncedGraph log('ws close') @ws.onmessage = (evt) => + if evt.data == 'PONG' + return @onMessage(JSON.parse(evt.data)) + pingLoop: () -> + if @ws.readyState == @ws.OPEN + @ws.send('PING') + + clearTimeout(@_pingLoopTimeout) if @_pingLoopTimeout? + @_pingLoopTimeout = setTimeout(@pingLoop.bind(@), 10000) + onMessage: (msg) -> log('from rdfdb: ', msg)