首页 > 解决方案 > 将 WebSocket 与两个 Web 浏览器实例区分开来

问题描述

我有一个 Node js 应用程序。它需要 3 个不同端口上的 3 个 websocket 服务器。在前端,3 个 websocket 连接到每个端口

[Browser.WebSocketClient:500] <--> [NodeJs.WebSocketServer:500]
[Browser.WebSocketClient:501] <--> [NodeJs.WebSocketServer:501]
[Browser.WebSocketClient:502] <--> [NodeJs.WebSocketServer:502]

在前端,当应用程序加载时,每个套接字都被创建并独立连接。在服务器端的某个时刻,我需要协调所有三个连接的客户端,以便管理员知道它们都来自同一个浏览器实例。这很容易使用 IP 地址,但它可以打开第二个 Web 浏览器并连接 3 个以上的套接字,然后继续(我需要这个进行测试)。时间戳不够可靠,无法正常工作(假设两个浏览器选项卡同时打开)。

我知道一种解决方案可能是在连接时通过 websocket 发送一个 uuid,但这将来自前端,这意味着它很容易被欺骗(Javascript ftw)。

有没有办法将这三个套接字识别为来自同一个浏览器实例?它本质上必须是内置的东西,我可以用作 uuid。

标签: javascriptnode.jsgoogle-chromefirefoxwebsocket

解决方案


推荐阅读