add request context into the socket handler #25

This commit is contained in:
2016-02-03 22:07:37 -05:00
parent b159ecbeb3
commit 3d4ce11d38
+10 -6
View File
@@ -27,19 +27,23 @@ if 'gevent' in locals():
class SocketMiddleware(object):
def __init__(self, wsgi_app, socket):
def __init__(self, wsgi_app, app, socket):
self.ws = socket
self.app = wsgi_app
self.app = app
self.wsgi_app = wsgi_app
def __call__(self, environ, start_response):
adapter = self.ws.url_map.bind_to_environ(environ)
try:
handler, values = adapter.match()
environment = environ['wsgi.websocket']
handler(environment, **values)
return []
with self.app.app_context():
with self.app.request_context(environ):
handler(environment, **values)
return []
except (NotFound, KeyError):
return self.app(environ, start_response)
return self.wsgi_app(environ, start_response)
class Sockets(object):
@@ -50,7 +54,7 @@ class Sockets(object):
self.init_app(app)
def init_app(self, app):
app.wsgi_app = SocketMiddleware(app.wsgi_app, self)
app.wsgi_app = SocketMiddleware(app.wsgi_app, app, self)
def route(self, rule, **options):