将 websocket 连接存储到 redis

fri*_*tor 6 ruby sinatra websocket redis padrino

我正在使用websocket-rack来构建一个聊天应用程序 API。

我想将 websocket 连接(最终成为 的一个实例Rack::WebSocket::Handler::Base::Connection)存储在 redis 中,以便它们可以被其他进程过滤和引用。

我意识到我可以将连接存储在一个类变量中,但这在跨进程中不起作用。

对象本身显然不能存储在 redis 中,但是websocket_key当我想向它发送消息时,我可以存储和其他一些信息并以某种方式重建连接对象吗?

Mar*_*cny 3

当我想向连接对象发送消息时,以某种方式重建连接对象?

您无法重建它,您需要使其保持活动状态,否则您将断开客户端连接。

维护 WebSocket 连接(活动)的进程还需要提供 API,以便其他进程可以告诉它代表它们发送消息。

例如,这可能是一个简单的私有(仅接受来自 的连接localhost)HTTP API,您可以在其中发送带有两个参数的 POST 消息:

  1. 您要发送的消息
  2. 您想将消息发送给谁