Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Flask session support #2

Closed
tito opened this issue Jul 15, 2015 · 2 comments
Closed

Flask session support #2

tito opened this issue Jul 15, 2015 · 2 comments

Comments

@tito
Copy link

tito commented Jul 15, 2015

Currently, we can't store anything from the client into the Flask session. Here is a traceback of the issue when trying to use it:

Traceback (most recent call last):
  File "/home/tito/.virtualenvs/new-socketio/local/lib/python2.7/site-packages/eventlet/wsgi.py", line 454, in handle_one_response
    result = self.application(self.environ, start_response)
  File "/home/tito/.virtualenvs/new-socketio/local/lib/python2.7/site-packages/engineio/middleware.py", line 32, in __call__
    return self.engineio_app.handle_request(environ, start_response)
  File "/home/tito/.virtualenvs/new-socketio/local/lib/python2.7/site-packages/socketio/server.py", line 253, in handle_request
    return self.eio.handle_request(environ, start_response)
  File "/home/tito/.virtualenvs/new-socketio/local/lib/python2.7/site-packages/engineio/server.py", line 186, in handle_request
    socket.handle_post_request(environ)
  File "/home/tito/.virtualenvs/new-socketio/local/lib/python2.7/site-packages/engineio/socket.py", line 80, in handle_post_request
    self.receive(pkt)
  File "/home/tito/.virtualenvs/new-socketio/local/lib/python2.7/site-packages/engineio/socket.py", line 42, in receive
    self.server._trigger_event('message', self.sid, pkt.data)
  File "/home/tito/.virtualenvs/new-socketio/local/lib/python2.7/site-packages/engineio/server.py", line 240, in _trigger_event
    return self.handlers[event](*args)
  File "/home/tito/.virtualenvs/new-socketio/local/lib/python2.7/site-packages/socketio/server.py", line 394, in _handle_eio_message
    self._handle_connect(sid, pkt.namespace)
  File "/home/tito/.virtualenvs/new-socketio/local/lib/python2.7/site-packages/socketio/server.py", line 284, in _handle_connect
    self.environ[sid]) is False:
  File "/home/tito/.virtualenvs/new-socketio/local/lib/python2.7/site-packages/socketio/server.py", line 345, in _trigger_event
    return self.handlers[namespace][event](*args)
  File "/home/tito/code/ninchanese-app/ninchanese/views/stream.py", line 40, in io_connect
    user_id = session.get("user_id")
  File "/home/tito/.virtualenvs/new-socketio/local/lib/python2.7/site-packages/werkzeug/local.py", line 338, in __getattr__
    return getattr(self._get_current_object(), name)
  File "/home/tito/.virtualenvs/new-socketio/local/lib/python2.7/site-packages/werkzeug/local.py", line 297, in _get_current_object
    return self.__local()
  File "/home/tito/.virtualenvs/new-socketio/local/lib/python2.7/site-packages/flask/globals.py", line 20, in _lookup_req_object
    raise RuntimeError('working outside of request context')
RuntimeError: working outside of request context
@miguelgrinberg
Copy link
Owner

Yes, this project is not Flask specific. If you want to store data per client you can use the storage of your choice. Each client can be referenced by its session id sid variable.

For a Flask specific solution, I'll be updating Flask-SocketIO to use this instead of gevent. I haven't done this yet.

@miguelgrinberg
Copy link
Owner

You can find the work-in-progress version of Flask-SocketIO that uses this project in branch "eventlet": https://github.com/miguelgrinberg/Flask-SocketIO/tree/eventlet.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants