# HG changeset patch # User drewp@bigasterisk.com # Date 1559285201 0 # Node ID a3718b297d1661088fdd40f3b58dd84d71305841 # Parent bd0e24f6254aecd09cc5fe1c417314fcfa619afd WIP starting to try a unified websocket between rdfdb and syncedgraph Ignore-this: 6e59eb9b2fb382f3ca3cbe4bb1ce925 diff -r bd0e24f6254a -r a3718b297d16 rdfdb/syncedgraph.py --- a/rdfdb/syncedgraph.py Fri May 31 02:51:08 2019 +0000 +++ b/rdfdb/syncedgraph.py Fri May 31 06:46:41 2019 +0000 @@ -23,7 +23,8 @@ from twisted.internet import defer import socket import treq - +import autobahn.twisted.websocket +from twisted.internet import reactor from rdfdb.autodepgraphapi import AutoDepGraphApi from rdfdb.currentstategraphapi import CurrentStateGraphApi from rdfdb.grapheditapi import GraphEditApi @@ -39,6 +40,17 @@ log = logging.getLogger('syncedgraph') + +class WsClient(autobahn.twisted.websocket.WebSocketClientProtocol): + def __init__(self, sg=0): + super().__init__() + self.sg = sg + def onOpen(self): + print('ws open') + def onMessage(self, payload, isBinary): + print('on msg') + + class SyncedGraph(CurrentStateGraphApi, AutoDepGraphApi, GraphEditApi): """ graph for clients to use. Changes are synced with the master graph @@ -73,18 +85,25 @@ receiverHost is the hostname other nodes can use to talk to me """ - if receiverHost is None: - receiverHost = socket.gethostname() + + # get that reonnecting agent + factory = autobahn.twisted.websocket.WebSocketClientFactory() + factory.protocol = WsClient + + reactor.connectTCP("127.0.0.1", 8209, factory) # need the path of /patches + + #if receiverHost is None: + # receiverHost = socket.gethostname() self.rdfdbRoot = rdfdbRoot self.initiallySynced: defer.Deferred[None] = defer.Deferred() self._graph = ConjunctiveGraph() - self._receiver = PatchReceiver(self.rdfdbRoot, receiverHost, label, - self._onPatch) + #self._receiver = PatchReceiver(self.rdfdbRoot, receiverHost, label, + # self._onPatch) - self._sender = PatchSender(self.rdfdbRoot + 'patches', - self._receiver.updateResource) + #self._sender = PatchSender(self.rdfdbRoot + 'patches', + # self._receiver.updateResource) AutoDepGraphApi.__init__(self) # this needs more state to track if we're doing a resync (and # everything has to error or wait) or if we're live diff -r bd0e24f6254a -r a3718b297d16 setup.py --- a/setup.py Fri May 31 02:51:08 2019 +0000 +++ b/setup.py Fri May 31 06:46:41 2019 +0000 @@ -11,6 +11,7 @@ 'treq', 'rdflib-jsonld', 'service_identity', + "autobahn", 'scales', # use git+http://github.com/drewp/scales.git@master#egg=scales ], url='https://projects.bigasterisk.com/rdfdb/rdfdb-0.18.0.tar.gz',