websocket如何同时处理浏览器两个标签?

我有

  • 1个PHP服务器(服务于HTTP请求)和
  • 1个node.js发布更新的数据消息(每个连接都带有websocket)。

php服务器设置其cookie。在一个浏览器中,此cookie在所有选项卡中均可用。

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

  • 区分选项卡的传统方法是什么?
  • 是否应该使用另一个cookie(由node.js管理)来区分每个浏览器选项卡?

最佳答案

将我的评论变成答案...

每个标签都有一个单独的websocket。这样,您便可以区分不同的选项卡。如果要在服务器中的每个选项卡上保留单独的状态,并且要允许同一用户进行多个连接,则必须保留每个websocket连接的状态(可以使用websocket id),而不是每个用户。

您不需要为每个标签创建单独的cookie,因为websocket本身已经充当了每个标签的唯一ID。

您没有说过您的应用程序是否希望所有选项卡都具有相同状态,或者每个选项卡都具有不同状态,并且您可能会根据需要在服务器端处理不同的事情。如果希望所有选项卡都接收相同的数据,则每当要将数据发送到客户端时,都必须查找与给定用户关联的所有websocket,并将相同的数据发送给他们。

如果希望每个选项卡独立运行,则只需在每个websocket上保持服务器端状态,并仅将响应发送到响应所属的websocket,而不发送与该用户关联的所有websocket。

与SO上的几乎所有问题一样,如果您告诉我们更多有关您实际在做什么的信息,而不是进行理论上的对话,那么回答起来就容易得多。例如,如果我们知道您的应用应如何与不同的选项卡一起使用,那么我们将知道遵循哪个行为路径。

以上是 websocket如何同时处理浏览器两个标签? 的全部内容, 来源链接: www.h5w3.com/122636.html

回到顶部