gpt4 book ai didi

javascript - Socket.io 和 Webscocket 在同一个服务器上监听

转载 作者:行者123 更新时间:2023-11-30 05:45:11 25 4
gpt4 key购买 nike

我需要在 socket.io 和 websocket(来自“ws”包)处理程序之间共享相同的 http 服务器。不幸的是,尽管他们正在监听不同的前缀,但第一个监听/socket.io,第二个监听/websocket url,由于某些原因,如果它们在同一台服务器上运行,则 websocket 无法正常工作。

我做了一些调试,但似乎两个库都正确处理了请求,但最后只有 socket.io 正常工作。

知道如何解决吗?

最佳答案

套接字在 node.js 中的工作方式与普通请求的工作方式有很大不同。没有路由,所以你必须监听所有的套接字,而不是监听一个 url。 socket.io 的默认行为是关闭任何它无法识别的套接字连接。要解决此问题,您需要将标记 'destroy upgrade': false 添加到选项中(server 是一个快速服务器):

require('socket.io').listen(server, {'destroy upgrade': false, ...})

您还需要在客户端连接时检查 url(在处理 /websocket 的代码中),如果它看起来属于 socket.io,则忽略它>。您可以从客户端对象(传递到 on connection 处理程序)中找到 url 作为 client.upgradeReq.url

关于javascript - Socket.io 和 Webscocket 在同一个服务器上监听,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18333396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com