Example #1
0
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()
Example #2
0
    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()
Example #3
0
    def run(self):
        static_path = os.path.join(self.path, 'static')

        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()
Example #4
0
    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()
Example #5
0
    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()
Example #6
0
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()
Example #7
0
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()
Example #8
0
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
                                  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()
Example #10
0
 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)
Example #11
0
def runserver():
    http_server = WebSocketServer(('127.0.0.1', 5001), app)
    http_server.serve_forever()
Example #12
0
        print("{0}: {1}".format(ex.__class__.__name__, ex))
    except Exception as ex:
        traceback.print_exc()


from pprint import pprint
def http_handler(environ, start_response):
    pprint(environ)
    path = os.path.join('./www', environ['PATH_INFO'].lstrip('/'))
    print("looking for {}".format(path))
    if os.path.exists(path):
        print("found {}".format(path))
        start_response("200 OK", [])
        return [open(path, "rb").read()]
    if environ["PATH_INFO"].strip("/") == "version":
        start_response("200 OK", [])
        return [agent]

    else:
        start_response("400 Bad Request", [])

        return ["WebSocket connection is expected here."]


path = os.path.dirname(geventwebsocket.__file__)
agent = bytearray("gevent-websocket/%s" % (geventwebsocket.get_version()),
                  'latin-1')

print("Running %s from %s" % (agent, path))
WebSocketServer(("", 3000), echo_app, debug=True).serve_forever()
Example #13
0
            resp.header.result = 0
            resp_data = resp.encode()
            print(resp_data)
            websocket.send(resp_data)
            # print(proto.access_pb2.ConnectGameServerReq.ParseFromString(bytes(message[24:]).decode()))
            # print('--->22')

            # websocket.send(message)
        websocket.close()
    except geventwebsocket.WebSocketError as ex:
        print("{0}: {1}".format(ex.__class__.__name__, ex))


def http_handler(environ, start_response):
    if environ["PATH_INFO"].strip("/") == "version":
        start_response("200 OK", [])
        return [agent]

    else:
        start_response("400 Bad Request", [])

        return ["WebSocket connection is expected here."]


path = os.path.dirname(geventwebsocket.__file__)
agent = bytearray("gevent-websocket/%s" % (geventwebsocket.get_version()),
                  'latin-1')

print("Running %s from %s" % (agent, path))
WebSocketServer(("0.0.0.0", 8800), echo_app, debug=True).serve_forever()
    if websocket is None:
        return http_handler(environ, start_response)
    try:
        while True:
            message = websocket.receive()
            websocket.send(message)
        websocket.close()
    except geventwebsocket.WebSocketError as ex:
        print('{0}: {1}'.format(ex.__class__.__name__, ex))


def http_handler(environ, start_response):
    if environ['PATH_INFO'].strip('/') == 'version':
        start_response('200 OK', [])
        return [agent]

    else:
        start_response('400 Bad Request', [])

        return ['WebSocket connection is expected here.']


if __name__ == '__main__':
    path = os.path.dirname(geventwebsocket.__file__)
    agent = bytearray('gevent-websocket/%s' % (geventwebsocket.get_version()),
                      'latin-1')
    print('Running %s from %s' % (agent, path))
    ser = WebSocketServer(('', 8000), echo_app, debug=False)
    ser.serve_forever()
Example #15
0
    websocket = environ.get("wsgi.websocket")

    if websocket is None:
        return http_handler(environ, start_response)
    try:
        while True:
            message = websocket.receive()
            websocket.send(message)
        websocket.close()
    except geventwebsocket.WebSocketError as ex:
        print("{0}: {1}".format(ex.__class__.__name__, ex))


def http_handler(environ, start_response):
    if environ["PATH_INFO"].strip("/") == "version":
        start_response("200 OK", [])
        return [agent]

    else:
        start_response("400 Bad Request", [])

        return ["WebSocket connection is expected here."]


path = os.path.dirname(geventwebsocket.__file__)
agent = bytearray("gevent-websocket/%s" % (geventwebsocket.get_version()),
                  'latin-1')

print("Running %s from %s" % (agent, path))
WebSocketServer(("", 8000), echo_app, debug=False).serve_forever()
Example #16
0
    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()
Example #17
0
    if websocket is None:
        return http_handler(environ, start_response)
    try:
        websocket.send('hello you cool fool')
        while True:
            message = websocket.receive()
            print('got %s' % message)
            websocket.send(message)
        websocket.close()
    except geventwebsocket.WebSocketError, ex:
        print "{0}: {1}".format(ex.__class__.__name__, ex)


def http_handler(environ, start_response):
    if environ["PATH_INFO"].strip("/") == "version":
        start_response("200 OK", [])
        return [agent]

    else:
        start_response("400 Bad Request", [])

        return ["WebSocket connection is expected here."]


path = os.path.dirname(geventwebsocket.__file__)
agent = "gevent-websocket/%s" % (geventwebsocket.get_version())
port = 8000
host = 'localhost'
print "Running on %s:%s" % (host, port)
WebSocketServer((host, port), echo_app, debug=False).serve_forever()