javascript - 客户端浏览器的 Socket.IO 检测有时会失败

标签 javascript node.js websocket socket.io real-time

我正在开发一个使用 Node.js 和 Socket.IO 的实时跟踪应用程序。在我的 tracking code在目标站点上运行 我有一些代码可以获取浏览器的用户代理字符串并将其发送回服务器。这通常工作正常,但有几次此数据设置为未定义(this is where it happens)。

目前,我在服务器上只有一个巨大的 try/catch block ,因此在运行我定义的用于检测它是什么浏览器的方法时它不会崩溃 (it crashes when it tries to run the match() method)。我假设这是从机器人或其他没有用户代理或已被篡改的浏览器发生的。我错了吗?还有其他原因吗?

Socket.IO 是否为浏览器检测提供了任何东西?无论哪种方式,我都知道我需要使浏览器检测功能更强大,但我只是让这个项目起步。

如果没有更好的方法来做到这一点,我是否最好只检查发送到服务器的数据是否未定义并将其视为“其他”浏览器?

enter image description here

看到总连接数和总浏览器数的差异了吗?目前,差异略高于 100。如果没有发生此浏览器跟踪问题,则数字应该完全相同(因为每个连接都会有浏览器、分辨率、操作系统和 URL)。

最佳答案

我对 socket.io 不是很熟悉,但看起来您可以在 socket.handshake.headers ( Socket.io's Wiki – Authorizing ) 中获取请求 header 。我不知道哪些浏览器运行 JavaScript 但没有设置 navigator.userAgent,但也许它们会发送 User-Agent HTTP header ?

关于javascript - 客户端浏览器的 Socket.IO 检测有时会失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13406632/

相关文章:

javascript - JSON 对象 - 递归地更改所有子项的属性名称

c# - 从 url 解析 Twitter 列表 id/用户名(C# 或 JavaScript)

node.js - Nodejs GM 模块 ImageMagick - 奇怪的错误

amazon-web-services - 带有 esp8266 的 AWS 物联网

java - 将数据存储在 ServerEndpoint 中

javascript - 计算函数返回 null - 获取问题?

javascript - 无法将文本添加到幻灯片 li 元素中

node.js - 在 Mongoose 中将字段设置为 null 时出错

node.js - knex.js 多个更新优化

websocket - 为什么 HTTP + Websockets 不适合作为消息传递协议(protocol)?