javascript - 将 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。
解决方案
推荐阅读
- google-sheets-formula - 在 Google 表格中配置公式
- php - 无法使用其 PHP SDK 在 Facebook 页面上自动发布
- wordpress - 无法在定制器菜单中选择站点标识徽标的图像
- ruby-on-rails - Rails - Google oauth2 request.env['omniauth.auth'] 是 nil 使用具有多个模型的omniauth
- r - (如何)CRAN 上的包可以导入不在 CRAN 上的包吗?
- c# - 等待匿名函数内部的代码
- javascript - pdf.js 不加载 pdf 文件
- css - 我希望我的链接只在我点击它时改变颜色,而不是仅仅刷新页面。我如何用 CSS 做到这一点?
- javascript - :not 选择器在 jQuery 中没有按预期工作
- docker - 在 GitLab CI 中使用 QEMU 而不是 Docker 映像