From acad9bc37b3e5f2c5309232d7e4e1368da93bba8 Mon Sep 17 00:00:00 2001 From: Robert Aistleitner Date: Thu, 28 Apr 2016 10:30:05 +0200 Subject: [PATCH 1/2] add support for cookies in the websocket if cookies are used for session handling, please note that you have to persist your session manually. something like ```self.app.save_session(session, make_response(""))``` after messages are received does the trick. --- flask_sockets.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/flask_sockets.py b/flask_sockets.py index de48e3b..aa51fa9 100644 --- a/flask_sockets.py +++ b/flask_sockets.py @@ -1,6 +1,8 @@ # -*- coding: utf-8 -*- from werkzeug.routing import Map, Rule from werkzeug.exceptions import NotFound +from werkzeug.http import parse_cookie +from flask import request def log_request(self): log = self.server.log @@ -37,9 +39,13 @@ class SocketMiddleware(object): try: handler, values = adapter.match() environment = environ['wsgi.websocket'] + cookie = parse_cookie(environ['HTTP_COOKIE']) with self.app.app_context(): with self.app.request_context(environ): + # add cookie to the request to have correct session handling + request.cookie = cookie + handler(environment, **values) return [] except (NotFound, KeyError): From d27c4ba2c9090b2decc8e09dbe5e685cc1dfd46a Mon Sep 17 00:00:00 2001 From: Robert Aistleitner Date: Thu, 28 Apr 2016 13:27:09 +0200 Subject: [PATCH 2/2] little bugfix to avoid exception on non-existing cookie --- flask_sockets.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/flask_sockets.py b/flask_sockets.py index aa51fa9..691744b 100644 --- a/flask_sockets.py +++ b/flask_sockets.py @@ -39,7 +39,9 @@ class SocketMiddleware(object): try: handler, values = adapter.match() environment = environ['wsgi.websocket'] - cookie = parse_cookie(environ['HTTP_COOKIE']) + cookie = None + if 'HTTP_COOKIE' in environ: + cookie = parse_cookie(environ['HTTP_COOKIE']) with self.app.app_context(): with self.app.request_context(environ):