我有
- 1个PHP服务器(提供http请求)和
- 1 node.js发布更新的数据消息(每个连接都有websocket)
php服务器设置其cookie。在一个浏览器中,此cookie可在所有选项卡中使用。
当浏览器有两个选项卡打开到域时,只有一个cookie标识浏览器,但每个选项卡必须发送一条更新数据的消息。
- 区分选项卡的传统方法是什么
- 我应该使用另一个cookie(由node.js管理)来区分每个浏览器选项卡吗
将我的评论转化为答案。。。
每个选项卡都有一个单独的websocket。这就是如何区分不同选项卡的方法。如果你在服务器中为每个选项卡保留单独的状态,并且你想允许同一用户进行多个连接,那么你必须为每个websocket连接保留状态(你可以使用websocket id),而不是每个用户。
你不需要为每个标签创建一个单独的cookie,因为websocket本身已经作为每个标签的唯一id
你还没有说你的应用程序是否希望所有选项卡的状态都相同,或者每个选项卡的状态不同,你会根据需要在服务器端处理一些不同的事情。如果您希望所有选项卡都能接收相同的数据,那么每当您想向客户端发送数据时,您都必须找到与给定用户关联的所有websocket,并向它们发送相同的数据。
如果您希望每个选项卡独立运行,那么您只需保持每个websocket的服务器端状态,并仅向响应所属的websocket发送响应,而不是向与该用户相关联的所有websocket。
与SO上几乎所有的问题一样,如果你告诉我们更多你实际在做什么,而不是进行理论对话,那么回答更具体的问题会容易得多。例如,如果我们知道你的应用程序应该如何使用不同的选项卡,那么我们就会知道该遵循哪个行为路径。