diff -r 31e63e25b4cc -r 64beb9e9c749 runtime/WampClient.py --- a/runtime/WampClient.py Mon Aug 21 20:17:19 2017 +0000 +++ b/runtime/WampClient.py Mon Aug 21 23:22:58 2017 +0300 @@ -22,7 +22,6 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import sys -#from twisted.python import log from autobahn.twisted import wamp from autobahn.twisted.websocket import WampWebSocketClientFactory, connectWS from twisted.internet.defer import inlineCallbacks @@ -51,14 +50,17 @@ DoOnJoin = [] + def GetCallee(name): """ Get Callee or Subscriber corresponding to '.' spearated object path """ global _PySrv names = name.split('.') obj = _PySrv.plcobj - while names: obj = getattr(obj, names.pop(0)) + while names: + obj = getattr(obj, names.pop(0)) return obj + class WampSession(wamp.ApplicationSession): @inlineCallbacks @@ -68,7 +70,7 @@ ID = self.config.extra["ID"] print 'WAMP session joined by :', ID for name in ExposedCalls: - reg = yield self.register(GetCallee(name), '.'.join((ID,name))) + reg = yield self.register(GetCallee(name), '.'.join((ID, name))) for name in SubscribedEvents: reg = yield self.subscribe(GetCallee(name), name) @@ -81,52 +83,57 @@ _WampSession = None print 'WAMP session left' + class ReconnectingWampWebSocketClientFactory(WampWebSocketClientFactory, ReconnectingClientFactory): def clientConnectionFailed(self, connector, reason): print("WAMP Client connection failed .. retrying ..") self.retry(connector) + def clientConnectionLost(self, connector, reason): print("WAMP Client connection lost .. retrying ..") self.retry(connector) + def LoadWampClientConf(wampconf): WSClientConf = json.load(open(wampconf)) return WSClientConf + def RegisterWampClient(wampconf): WSClientConf = LoadWampClientConf(wampconf) - ## start logging to console + # start logging to console # log.startLogging(sys.stdout) # create a WAMP application session factory component_config = types.ComponentConfig( - realm = WSClientConf["realm"], - extra = {"ID":WSClientConf["ID"]}) + realm=WSClientConf["realm"], + extra={"ID": WSClientConf["ID"]}) session_factory = wamp.ApplicationSessionFactory( - config = component_config) + config=component_config) session_factory.session = WampSession # create a WAMP-over-WebSocket transport client factory transport_factory = ReconnectingWampWebSocketClientFactory( session_factory, - url = WSClientConf["url"], - serializers = [MsgPackSerializer()], - debug = False, - debug_wamp = False) + url=WSClientConf["url"], + serializers=[MsgPackSerializer()], + debug=False, + debug_wamp=False) # start the client from a Twisted endpoint conn = connectWS(transport_factory) - print "WAMP client connecting to :",WSClientConf["url"] + print "WAMP client connecting to :", WSClientConf["url"] return conn + def GetSession(): global _WampSession return _WampSession + def SetServer(pysrv): global _PySrv _PySrv = pysrv -