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


How does websockets deal with for two tabs of the same browser

我有

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

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

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

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

将我的评论转化为答案。。。

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

你不需要为每个标签创建一个单独的cookie,因为websocket本身已经作为每个标签的唯一id

你还没有说你的应用程序是否希望所有选项卡的状态都相同,或者每个选项卡的状态不同,你会根据需要在服务器端处理一些不同的事情。如果您希望所有选项卡都能接收相同的数据,那么每当您想向客户端发送数据时,您都必须找到与给定用户关联的所有websocket,并向它们发送相同的数据。

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

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