class Server(object): def __init__(self, methods=None): self._endpoint = None self._methods = methods self._wsserver = None def bind(self, endpoint): self._endpoint = endpoint def run(self): methods = self._methods endpoint = self._endpoint class WampApplication(WebSocketApplication): protocol_class = WampProtocol def on_open(self): wamp = self.protocol if methods: wamp.register_object(endpoint, methods) ep = urlparse(self._endpoint) resource = Resource({'^%s$' % ep.path: WampApplication}) self._wsserver = WebSocketServer(ep.netloc, resource, debug=True) self._wsserver.serve_forever()
def run(app, host=None, port=None, debug=None, logger=logger): monkey.patch_all() address = get_address(host, port, app.config['SERVER_NAME']) if debug is not None: app.debug = debug if app.debug: #app.wsgi_app = DebuggedApplication(app.wsgi_app, evalex=True) server = WebSocketServer(address, app.wsgi_app, debug=debug) server._logger = logger logger.setLevel(logging.INFO) def run_server(): server.serve_forever() if os.environ.get('WERKZEUG_RUN_MAIN') != 'true': server.logger.info(' * Running on http://%s:%d/' % address) server.logger.info(' * WebSocket enabled') run_with_reloader(run_server) else: server = WebSocketServer(address, app.wsgi_app, debug=debug) server._logger = logger server.serve_forever() return server
def run(app, host=None, port=None, debug=None, logger=logger): monkey.patch_all() address = get_address(host, port, app.config['SERVER_NAME']) if debug is not None: app.debug = debug if app.debug: #app.wsgi_app = DebuggedApplication(app.wsgi_app, evalex=True) server = WebSocketServer(address, app.wsgi_app, debug=debug) server._logger = logger logger.setLevel(logging.INFO) def run_server(): server.serve_forever() if os.environ.get('WERKZEUG_RUN_MAIN') != 'true': server.logger.info(' * Running on http://%s:%d/' % address) server.logger.info(' * WebSocket enabled') run_with_reloader(run_server) else: server = WebSocketServer(address, app.wsgi_app, debug=debug) server._logger = logger server.serve_forever() return server
def run(self): static_path = os.path.join(self.path, 'api/webui') routes = [('^/static/', self.make_static_application('/static/', static_path)), ('^/$', self.serve_index), ('^/ws$', UIService)] data = { 'handler': self.handler, # object 'registrars': self.registrars # list of topics } resource = _Resource(routes, extra=data) server = WebSocketServer(("", self.port), resource, debug=True) server.serve_forever()
def run(self): static_path = os.path.join(self.path, 'webui') routes = [('^/static/', self.make_static_application('/static/', static_path)), ('^/$', self.serve_index), ('^/ws$', UIService) ] data = {'handler': self.handler, # object 'registrars': self.registrars # list of topics } resource = _Resource(routes, extra=data) server = WebSocketServer(("", self.port), resource, debug=True) server.serve_forever()
def main(): log = None if VERBOSE: log = "default" server = WebSocketServer((HTTP_HOST, HTTP_PORT), app, log=log) def term_handler(signum, frame): server.stop() signal.signal(signal.SIGINT, term_handler) signal.signal(signal.SIGTERM, term_handler) print("Listening at http://{}:{}/".format(HTTP_HOST, HTTP_PORT)) server.serve_forever()
def run(self): static_path = os.path.join(self.path, 'webui') # XXX naming routes = [('^/static/', self.make_static_application('/static/', static_path)), ('^/$', self.serve_index), ('^/ws$', WebSocketAPI)] data = { 'raiden': self.raiden, 'port': self.port, 'events': self.events } resource = Resource(routes, extra=data) server = WebSocketServer(("", self.port), resource, debug=True) server.serve_forever()
def run(self): static_path = os.path.join(self.path, 'webui') # XXX naming routes = [('^/static/', self.make_static_application('/static/', static_path)), ('^/$', self.serve_index), ('^/ws$', WebSocketAPI) ] data = {'raiden': self.raiden, 'port': self.port, 'events': self.events } resource = Resource(routes, extra=data) server = WebSocketServer(("", self.port), resource, debug=True) server.serve_forever()
class WSGHaven(GHaven): stream_class = WSStream def __init__(self, box_class, path_pattern, merge_wsgi_app=None, **kwargs): super(WSGHaven, self).__init__(box_class, **kwargs) self.path_pattern = path_pattern self.merge_wsgi_app = merge_wsgi_app def wsgi_app(self, environ, start_response): """ 将原始的app,包装为包括websocket的app """ path = environ['PATH_INFO'] if re.match(self.path_pattern, path): ws = environ['wsgi.websocket'] address = (environ.get('REMOTE_ADDR'), environ.get('REMOTE_PORT')) self._handle_stream(ws, address) else: if self.merge_wsgi_app: return self.merge_wsgi_app(environ, start_response) else: start_response("400 Bad Request", []) return ['400 Bad Request'] def __call__(self, environ, start_response): return self.wsgi_app(environ, start_response) def _prepare_server(self, address): import _socket # 只有这样,才能保证在主进程里面,不会启动accept listener = self.server_class.get_listener(address, backlog=self.backlog, family=_socket.AF_INET) listener.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) self.server = WebSocketServer(listener, self.wsgi_app) def _serve_forever(self): self.server.serve_forever()
class WSGHaven(GHaven): stream_class = WSStream def __init__(self, box_class, path_pattern, merge_wsgi_app=None, **kwargs): super(WSGHaven, self).__init__(box_class, **kwargs) self.path_pattern = path_pattern self.merge_wsgi_app = merge_wsgi_app def wsgi_app(self, environ, start_response): """ 将原始的app,包装为包括websocket的app """ path = environ['PATH_INFO'] if re.match(self.path_pattern, path): ws = environ['wsgi.websocket'] address = (environ.get('REMOTE_ADDR'), environ.get('REMOTE_PORT')) self._handle_stream(ws, address) else: if self.merge_wsgi_app: return self.merge_wsgi_app(environ, start_response) else: start_response("400 Bad Request", []) return ['400 Bad Request'] def __call__(self, environ, start_response): return self.wsgi_app(environ, start_response) def _prepare_server(self, address): import _socket # 只有这样,才能保证在主进程里面,不会启动accept listener = self.server_class.get_listener(address, backlog=self.backlog, family=_socket.AF_INET) listener.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) self.server = WebSocketServer(listener, self.wsgi_app) def _serve_forever(self): self.server.serve_forever()
def on_open(self): wamp = self.protocol wamp.register_procedure("http://localhost:8000/calc#add", self.add) wamp.register_object("http://localhost:8000/db#", KeyValue()) print "opened" def on_message(self, message): print "message: ", message super(WampApplication, self).on_message(message) def on_close(self, reason): print "closed" def add(self, x, y): return int(x) + int(y) def static_wsgi_app(environ, start_response): start_response("200 OK", [("Content-Type", "text/html")]) return open("wamp_example.html").readlines() if __name__ == "__main__": resource = Resource({ '^/wamp_example$': WampApplication, '^/$': static_wsgi_app }) server = WebSocketServer(("", 8000), resource, debug=True) server.serve_forever()
RPCTestClass()) self.wamp.register_pubsub("http://localhost:8000/somechannel") print "opened" def on_message(self, message): print "message: ", message super(WampApplication, self).on_message(message) def on_close(self): print "closed" def add(self, var, has): has.update({'bloep': var}) return has def build_protocol(self): self.wamp = WampProtocol(self) return self.wamp @classmethod def protocol(cls): return WampProtocol.PROTOCOL_NAME if __name__ == "__main__": resource = Resource({'/': WampApplication}) server = WebSocketServer(("", 8000), resource, debug=True) server.serve_forever()
def runserver(): http_server = WebSocketServer(('127.0.0.1', 5001), app) http_server.serve_forever()