From 7b6f6388741111482aad8d27c39480ac683685e1 Mon Sep 17 00:00:00 2001 From: YAMADA Hideki Date: Wed, 14 May 2014 19:11:01 +0900 Subject: wsgi: Support WebSocket - Hack webob.dec.wsgify for taking start_response function. - Add websocket handshake helper method to controller. Signed-off-by: YAMADA Hideki Signed-off-by: FUJITA Tomonori --- ryu/app/wsgi.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/ryu/app/wsgi.py b/ryu/app/wsgi.py index 384c32c2..320f6b77 100644 --- a/ryu/app/wsgi.py +++ b/ryu/app/wsgi.py @@ -67,6 +67,16 @@ class ControllerBase(object): return getattr(self, action)(req, **kwargs) + def websocket_handshake(self, req, handler): + ws_wsgi = hub.WebSocketWSGI(handler) + return ws_wsgi(req.environ, req.start_response) + + +class wsgify_hack(webob.dec.wsgify): + def __call__(self, environ, start_response): + self.kwargs['start_response'] = start_response + return super(wsgify_hack, self).__call__(environ, start_response) + class WSGIApplication(object): def __init__(self, **config): @@ -92,13 +102,14 @@ class WSGIApplication(object): match = self.mapper.match(req.path_info) return match - @webob.dec.wsgify - def __call__(self, req): + @wsgify_hack + def __call__(self, req, start_response): match = self._match(req) if not match: return webob.exc.HTTPNotFound() + req.start_response = start_response req.urlvars = match link = URLGenerator(self.mapper, req.environ) -- cgit v1.2.3