问题标签 [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.
nginx - WebSocket 在建立连接之前关闭 - 生产中的 Socket.io 使用错误
我已经设置了一个套接字 io Web 应用程序,它在本地系统上运行良好,但在生产服务器上,它不起作用,我看到了这些日志
客户端日志
服务器端的日志
我有这些 nginx 配置(我已将非 ssl 流量重定向到 ssl 端口 443
socket.io - engine.io [RangeError: 超出最大调用堆栈大小]
随机获取RangeError:通过 Socket.IO 房间概念将数据发送到连接的客户端时超出了最大调用堆栈大小。经过几个论坛,它说数据对象可能有自引用数组 Node.js + Socket.io 超过最大调用堆栈大小可能会发生此异常,但在我的代码中,我在纯字符串数据和数据对象中都出现异常还。
以下是示例代码片段
发送纯文本
堆栈跟踪
发送对象数据
堆栈跟踪
javascript - 使用 Socket.io 和 http 轮询的共享用户
我正在尝试使用带有 Node.js 的 Socket.io 将 Aws Lambda 用于我的应用程序。
由于 lambda 上的 websocket 限制,我决定使用 http 轮询,但是当客户端执行第一个接收 SID 的请求时,在第二个请求中,服务器抛出Session id unknown
,因为触发了另一个实例并且没有该用户在内存中。
我尝试将socket.io-redis
其用作 socket.io 的 redis 适配器,我尝试使用express-session
and共享 redis 上的会话,express-socket.io-session
但没有任何效果。
在我的 server.js 上,我有:
分析engine.io(socket.io使用的lib)代码,我看到异常是在哪里抛出的:
而且这个变量clients
没有复杂的实现,只是一个局部变量。
所以,我的问题是:
是否可以使用 socket.io 为多个实例创建共享用户存储? (例如,保存在 redis 上并使 socket.io 找到此 redis 实例的会话 id 而不是内存变量)。
提前致谢。
javascript - socket.io:与其他用户共享 socket.id
我有一个 socket.io 信令服务器,我需要在其中允许两个连接的客户端相互发现并交换信息。
我正在考虑为此使用socket.id,因为它是使用如下代码进行连接的真正唯一值:
官方文档(例如https://socket.io/docs/v3/client-api/#socket-id)说 id 是“套接字会话的唯一标识符”。所以我担心,我可以安全地将session.id
一个用户的信息广播给其他用户,还是允许他们劫持会话?
我找不到任何关于它的文档 - 只是session.id
似乎来自 engine.io。
react-native - 如果连接断开一次,React Native socket.io websocket 将无法连接
我正在使用 React Native (0.63.4) 和 socket.io 客户端 (2.4.0) 连接到我的 socket.io 服务器:
一切正常且稳定,直到连接间歇性中断。一旦断开连接并建立 Internet 连接,socket.io 就会进入这个无限循环:
除非我重新启动我的应用程序,否则我无法连接它(热重新加载也无济于事)。我已经尝试过forceNew
settrue
和false
,没有任何区别。如果我使用polling
传输而不是websocket
问题消失(连接建立并在断开/重新连接后成功工作),但我想使用 websockets。
我究竟做错了什么?(我不能使用 v3.x,因为服务器在 2.x 上)
node.js - 套接字 IO 允许来自 curl 的 CORS 请求,但不允许来自客户端应用程序
我正在制作一个应用程序,其中有一个节点后端和一个角度前端。
我正在使用 socket.IO 在我的客户端和服务器之间进行通信。
我正面临 CORS 问题,我将其解决(尝试)为:
但是,从我的客户端应用程序(在另一个端口运行)提出请求后,我仍然遇到了 CORS 问题。
所以我去了我的终端,并用 curl 提出了一个请求,如下所示:
这表明我 curl 能够访问服务器,并且没有面临 CORS 问题。
在我的客户端中,我试图连接到我的服务器:
帮助我解决我的问题,以便我可以连接到我的服务器。
另附注:如果应用程序中 server.io 的版本为 3,则对服务器的 curl 请求也会失败。只有在 server.io 版本 4 上,curl 请求才会通过。
如果有帮助,Firefox中的错误:
编辑:我的问题是无法使用客户端连接到服务器。我展示了 curl,因为它是在 socket.io cors 配置网页中建议的。
socket.io - 尽管响应格式正确,引擎 IO 客户端解析器错误?
我正在尝试使用socket.io
. 我分析了网络面板并确定客户端使用套接字 IO与端点https://gs.ethercrash.io通信。
在查看客户端和服务器之间交换的数据时,服务器对第一个数据包的响应是:
并且交换按预期继续进行。
所以我在本地 React 应用程序上尝试了以下操作:
正如预期的那样,发送的请求看起来与从 ethercrash 应用程序发送的请求几乎相同。唯一的区别是我EIO=4
在 ethercrash 应用程序使用EIO=3
. 事实上,响应是相同的,正如预期的那样:
然而,经过一段时间的故障排除后,我发现了以下错误:
为什么?我们收到完全相同的数据。为什么会出现解析器错误?