6

早上好,

我遇到了一些麻烦,我希望有人能在这里帮助我。我想要做的是访问 Gevent Socket-IO 名称空间中的 Flask 会话。

我尝试将烧杯用作中间件客户端,但我仍然无法从 socket-io 名称空间中访问和更新会话信息。

我对这一切都很陌生,所以任何帮助都将不胜感激。

4

1 回答 1

3

使用默认的 Flask 会话,似乎可以在初始化命名空间时共享(具有只读访问权限)会话数据。

session_dict=dict(session)
socketio_manage(request.environ, {'/news': NewsNamespace}, request=session_dict)

session_dict然后可以self.request在命名空间中访问。这是一个 hack,但 Flask/werkzeug 会话似乎无论如何都不能在请求上下文之外工作。

我在 Flask 会话中放置了一个会话 ID(随机生成的 uuid)。然后,Flask 视图和命名空间都知道会话 ID,并且都可以在 Redis 或其他数据存储中的服务器端会话中读取/写入数据,会话 ID 作为键。

这只是我用于在 Flask 和 gevent-socketio 之间共享会话的解决方案;我没有尝试过 Beaker,不确定您在使用它时遇到了哪些具体问题,或者是否有更好的解决方案。

于 2013-09-27T02:53:42.377 回答