在Javascript WebSocket上设置ARRAffinity cookie(在浏览器中)

时间:2017-09-25 07:24:57

标签: javascript .net azure websocket azure-web-sites

我正在为我的Azure Webapp添加一个WebSocket处理程序。让我们说我正在写聊天服务器(虽然我不是),服务器将保留内存中所有打开连接的列表,以便所有连接的客户端可以相互通信。

现在,我已启用自动缩放,因此我的服务器可以在某个时间点扩展到2个实例。现在连接到实例1 的客户端无法与恰好连接到实例2的客户端进行通信。

为了解决这个问题,我试图找出是否可以使用Azures ARRAffinity cookie来定位特定实例,但到目前为止我发现这只是可能的:

  • 对于普通的Web请求(不是"新的WebSocket()")
  • 使用node.js从服务器到服务器

所以我的问题,实际上它是否可能以某种方式使用websockets?你有其他建议吗?

编辑2017-11-02:这仍然是一个有趣的问题,但我已经用不同的(主要是积极的)方式解决了它:由于所有通过websocket的消息已经被序列化,因此很容易利用我已经存在的Redis缓存发布/订阅功能。

所以我现在所做的是:

  1. 消息来自客户端A的websocket - 针对客户端B.
  2. 消息到达网络服务器X(许多可能的网络服务器之一,具体取决于横向扩展)
  3. 消息发布到Redis缓存通道
  4. 所有网络服务器订阅Redis缓存通道并收到消息
  5. 碰巧与目标客户端保持websocket连接的一个Web服务器传递消息,所有其他Web服务器忽略该消息

0 个答案:

没有答案