websocket如何处理同一浏览器的两个选项卡

我有

  • 1个PHP服务器(提供http请求)和
  • 1 node.js发布更新的数据消息(带有每个连接的websockets)。

PHP服务器设置其Cookie。 在一个浏览器中,这个cookie可用于所有标签。

当浏览器向域打开2个选项卡时,只有一个识别浏览器的cookie,但必须将1条更新数据消息发送到每个选项卡。

  1. 什么是区分标签的传统方式?
  2. 我应该使用另一个cookie(由node.jspipe理)区分每个浏览器标签吗?

把我的评论变成答案

每个标签都有一个单独的websocket。 这就是你如何区分不同的标签。 如果你在服务器的每个选项卡上保持单独的状态,并且你想允许同一个用户进行多个连接,那么你必须保持每个websocket连接的状态(你可以使用websocket id),而不是每个用户。

您不需要为每个选项卡创build一个单独的cookie,因为websocket本身已经作为每个选项卡的唯一ID。

你还没有说过,如果你的应用程序要在所有选项卡中使用相同的状态,或者每个选项卡具有不同的状态,并且基于需要在服务器端处理事情有点不同。 如果您希望所有选项卡都接收相同的数据,那么无论何时要将数据发送到客户端,您都必须查找与给定用户关联的所有WebSockets,并将相同的数据发送给它们。

如果您希望每个选项卡独立运行,那么您只需为每个websocket保留服务器端状态,并仅向响应所属的websocket发送响应,而不是与该用户关联的所有websocket。

正如几乎所有关于SO的问题一样,如果你更多地告诉我们你正在做什么,而不是进行理论上的对话,那么回答更加容易。 例如,如果我们知道您的应用程序应该如何使用不同的选项卡,那么我们就知道要遵循哪个行为path。