def start(self): """ Starts this node. This will start a node controller and then spawn new worker processes as needed. The node controller will watch spawned processes, communicate via stdio with the worker, and start and restart the worker processes as needed. """ ## the node controller singleton WAMP application session ## self._node_controller_session = NodeControllerSession(self) ## router and factory that creates router sessions ## self._router_factory = RouterFactory() self._router_session_factory = RouterSessionFactory(self._router_factory) ## add the node controller singleton session to the router ## self._router_session_factory.add(self._node_controller_session) if True: ## create a WAMP-over-WebSocket transport server factory ## from autobahn.twisted.websocket import WampWebSocketServerFactory from twisted.internet.endpoints import serverFromString self._router_server_transport_factory = WampWebSocketServerFactory(self._router_session_factory, "ws://localhost:9000", debug = False) self._router_server_transport_factory.setProtocolOptions(failByDrop = False) ## start the WebSocket server from an endpoint ## self._router_server = serverFromString(self._reactor, "tcp:9000") self._router_server.listen(self._router_server_transport_factory) ## factory that creates router session transports. these are for clients ## that talk WAMP-WebSocket over pipes with spawned worker processes and ## for any uplink session to a management service ## self._router_client_transport_factory = WampWebSocketClientFactory(self._router_session_factory, "ws://localhost", debug = False) self._router_client_transport_factory.setProtocolOptions(failByDrop = False) if False: management_session_factory = ApplicationSessionFactory() management_session_factory.session = NodeManagementSession management_session_factory.node_controller_session = node_controller_session management_transport_factory = WampWebSocketClientFactory(management_session_factory, "ws://127.0.0.1:7000") management_transport_factory.setProtocolOptions(failByDrop = False) management_client = clientFromString(self._reactor, "tcp:127.0.0.1:7000") management_client.connect(management_transport_factory) ## startup the node from configuration file ## self._node_controller_session.run_node_config(self._config)
def start_remote_management_client(self): from crossbar.management import NodeManagementSession management_session_factory = ApplicationSessionFactory() management_session_factory.session = NodeManagementSession management_session_factory.node_controller_session = node_controller_session management_transport_factory = WampWebSocketClientFactory(management_session_factory, "ws://127.0.0.1:7000") management_transport_factory.setProtocolOptions(failByDrop = False) management_client = clientFromString(self._reactor, "tcp:127.0.0.1:7000") management_client.connect(management_transport_factory)