问题标签 [engine.io]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
937 浏览

node.js - nodejs + socket.io + 心跳

我的错误:

engine.io ./lib/socket.js 第 98 行

我怎样才能听事件。

this.emit('heartbeat');

我写了这段代码:

但它不打印。

调试打印是:

谁能帮我。

0 投票
1 回答
698 浏览

node.js - socket.io - 多个连接导致缓慢的消息发送到服务器

注意:当我删除“node_modules\uws\uws_win32_59.node”时,它工作正常。uws 被engine.io 使用,socket.io 使用它。

我写了一个非常基本的应用程序来演示这个问题。在下面的应用程序中,在 chrome 中打开了 index.html 的 2 个选项卡,单击“emit”会从客户端发出消息,但需要很长一段时间才能到达服务器。2-15+秒的任何地方。如果我只打开 1 个 index.html 页面,它可以正常工作,但是一旦打开第二个页面,我就会遇到问题。如果我删除上面的 uws_win32_59.node,它适用于多个连接。

服务器.js

索引.html

默认的“npm install socket.io”安装上面提到的 uws 模块,它本身由 engine.io 使用。

运行“节点服务器”并打开 index.html 的 2 个实例并单击发出并注意浏览器开发人员工具控制台日志记录和节点服务器控制台日志记录以重新创建问题。

编辑:看起来windows os上的uws存在一个未解决的问题:https ://github.com/socketio/socket.io/issues/3100

0 投票
1 回答
1921 浏览

node.js - 一起发送 JSON 和 blob

我正在编写一个简单的流媒体服务。

A 浏览器 A 打开一个到服务器的 Web 套接字,然后另一个浏览器 B 打开一个到同一服务器的新套接字。

浏览器 A 通过其摄像头(MediaRecorder API)注册视频并将其发送到服务器。

服务器将此视频广播到其他连接的浏览器。

我有一个使用 Socket.IO 的工作版本,但我想用 vanilla JavaScript(Node.js 服务器上的 WebSocket.Server 和客户端上的 webSocket)来做。

这就是问题:

使用 socket.io a 可以这样写:

Stream 来自 mediarecorder -> dataavailable 事件监听器

但是对于本机 websocket,我无法发送嵌入到 JSON 对象中的 blob,因为 websocket 只能发送字符串或数组缓冲区。

为了将 JSON 和 blob 一起发送,我尝试了许多不同的方法,但没有任何效果。

有什么帮助吗?

是否可以在客户端仅使用 Engine.IO 以便将带有 blob 和 JSON 的消息打包在一起?关于这种方式的任何想法?

0 投票
0 回答
281 浏览

node.js - Socket.io 中 pingInterval 和 pingTimeout 的最小值

我正在开发一个实时游戏应用程序。我面临的问题是我disconnect从 Android 客户端获取了一个事件,即使从那里的连接仍然有效。通过研究,我发现可以通过为 io 设置 pingInterval 和 pingTimeout 值的适当组合来解决此问题。有人可以为此提出解决方案吗?还有可以设置的 pingInterval 和 pingTimeout 的最小值来解决问题吗?

我正在使用的当前配置:

0 投票
1 回答
2756 浏览

javascript - 在 Socket.IO 中,“io”cookie 是做什么用的?

我知道它是一个会话 cookie,但 Socket.IO 实际使用iocookie 的目的是什么?我知道我可以禁用它,但在 docs上找不到任何其他内容。为什么默认启用它,如果禁用它会丢失或破坏什么?

0 投票
2 回答
3923 浏览

node.js - 独立 websocket 服务器的 Socket.io“无效帧头”错误

有没有办法让一个单独的 websocket 服务器socket.io在不同的路径上一起工作?

我看到的行为是,当创建单独的 websocket 服务器时,socket.io仍然可以正常运行,但不会升级到 websocket 的连接并失败并出现错误(来自 chrome):

需要明确的是,如果省略了 websocket 服务器行,则socket.io可以正常工作。

apollo-server-express我的具体用例是启用订阅时由包创建一个 websocket 服务器。有没有办法以socket.io更友好的方式进行配置?或者,我相信我可以为 apollo 提供一个 websocket 服务器来使用而不是创建一个......我将如何创建它?

用于复制的软件包版本:

0 投票
1 回答
200 浏览

javascript - 是否有为 socket.io ack/responses 发出的事件?

我正在使用socket.io 并用feathersjs 表达两者。对于指标收集,我试图捕获通过 Express 和 socket.io 发出的请求的往返。

express 方面很容易使用 express 中间件。

我可以通过以下方式捕获 socket.io入站请求socket.use

socket.use但是,我在出站/确认端找不到任何等价物。engine.io 内部有一些事件,但我无法访问它们。

我真的试图找到为每个请求/响应发出的一组等效事件(后者相当于finishin express)。

我不能在这里使用连接/断开事件;无论羽毛服务和模块如何,我都想捕获通过套接字发出的每个请求以及为它们发送的响应。

Feathers.js 钩子可以用于此,但它需要将一堆上下文从 socket.io 中间件传递到羽毛中,我希望不要这样做。

有人知道这样做的方法吗?

0 投票
0 回答
352 浏览

java - 如何使用 socket io 监听 tcp 端口?

我有一个正在端口上写入的应用程序(在特定端口上使用 spring-integration tcp-outbound-channel 的 TCP 消息)。我想编写一个侦听器,它将侦听并验证来自此端口的消息。

建议之一是使用 socket.io。我试图做一个示例 POC,但我无法启动非 http 服务器。如何启动基于 socket.io 的服务器,该服务器将侦听通过 TCP(没有 http)发送的消息。

0 投票
0 回答
596 浏览

java - WebSocket 握手错误:意外的响应代码:400

我必须在我的项目中使用engine.io-server-java。当我启动eio函数时,请求失败并抛出 400 Bad requests。我该如何调试这个问题?是否有可用于 engine.io-server-java 的文档?

错误

WebSocket 连接到“ws://localhost:8080/engine.io/?EIO=3&transport=websocket&sid=Mg_ZSd5”失败:WebSocket 握手期间出错:意外响应代码:400

请求标头

代码:

客户代码:

0 投票
0 回答
103 浏览

node.js - 一旦 Socket.io 升级到 WebSockets,我应该重新进行身份验证吗?

在 NodeJS 中使用 Socket.io 时,它首先创建一个轮询传输,然后尝试将其升级到侧面的 websocket。在初始轮询请求期间,可以将标头发送到服务器并使用其中的信息进行身份验证。然后将该套接字标记为安全,并且在初始请求之后的每个请求都被认为来自同一用户。

这个假设从未在 Socket.io 文档中直接说明,但有几个示例使用中间件(仅在初始连接设置时运行)来处理身份验证。

我的问题是,当轮询传输升级到 websocket 时,这种确定性是否会延续?一旦套接字出现和“升级”事件,我应该重新进行身份验证吗?而且我确定 mallicius 客户端将无法直接建立 websocket,而无需先经过轮询步骤?