javascript - 什么可能导致socket.io服务时间过长?

标签 javascript node.js websocket socket.io

我的网站上运行着 socket.io。 当我阅读服务器日志时,我看到很多这样的行:

at=info method=GET path="/socket.io/?EIO=3&transport=websocket&sid=aIngEEcxyyq0IZa7ABdN"  service=15672ms status=101 bytes=129 protocol=https
at=info method=GET path="/socket.io/?EIO=3&transport=websocket&sid=K8sqpqsEh7rRWbk4ABcK" connect=0ms service=256166ms status=101 bytes=175 protocol=https
at=info method=GET path="/socket.io/?EIO=3&transport=websocket&sid=OyeTNvf0X7luR4xaAAID"  connect=1ms service=13821612ms status=101 bytes=150511 protocol=https

如您所见,服务时间(不确定这意味着什么,但在我的日志中读取)非常长。

socket.io ping 服务时间过长的原因可能是什么?

最佳答案

socket.io 应该有很长的连接时间。整个想法是客户端连接到服务器,保持连接打开一段时间(通常是页面的持续时间),然后通过该连接发送/接收消息。

如果您没有意识到,这样的请求:

method=GET path="/socket.io/?EIO=3&transport=websocket&sid=aIngEEcxyyq0IZa7ABdN"

是socket.io/webSocket连接的启动。它们都以 http 请求开始,然后“升级”为 webSocket 协议(protocol)。连接保持打开状态,直到网络浏览器关闭该页面或客户端代码关闭连接。

这些请求不是 ping。 Ping 发生在 webSocket 连接内部,并且不会在 http 请求级别记录(socket.io ping 在 Chrome 调试器的网络选项卡中可见)。

关于javascript - 什么可能导致socket.io服务时间过长?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59208586/

相关文章:

javascript - 查找某个项目是否在 JavaScript 数组中的最佳方法?

javascript - 如何在一次查询中从 3 个 Bookshelf.js 模型获取数据

node.js - 无法下载附加到项目的 Podio 文件

html - 推特 + HTML5 webSocket API

javascript - 如何从 jQuery .click() 内部调用方法并保持上下文?

javascript - 如何在这个随机背景js中连续两次不出现相同的bg

javascript - HTML 表格列未正确显示

Node.js 基准测试不顺利

javascript - Websocket 握手失败 404(golang 服务器)

python - 无法在 python 中解码 AWS Session Manager websocket 输出