如何在同一端口但不同路径上同时使用socketio和ws

2023-12-30

我使用socketio作为我的websocket库启动了一个应用程序,但现在我需要使用不支持socketio的sharejs。我本想改变这个库,但我在socketio方面已经取得了很大的进步。

我尝试使用 websocket ws 库,它似乎只有当我将 socketio 和 ws 放在不同的服务器端口上时才起作用。

我需要能够为它们使用相同的端口。请问我该怎么做。我发现我可以将它们放在不同的路径上,但我未能成功做到这一点。我真的很感激建议或答案。


这有点奇怪,因为 Express 不支持 Websocket 请求的正确路由。第一步是要通过'destroy upgrade': false作为 socket.io 的一个选项。如果没有这个,它将关闭它无法识别的路径上的 websocket 连接。

然而,关闭错误的 websocket 连接仍然很重要。我们会告诉ws何时执行此操作,以便我们可以容纳两条有效路径。我们需要传递一个函数作为verifyClient的选项ws.Server构造函数。该函数应该接受参数(info, next)。您可以使用info.req.url以确定这是否是您正在处理的路径。这里有3种情况:

  1. socket.io 正在处理此路径。从函数返回没有 下一个呼叫。这告诉ws既不关闭连接也不 尝试处理它。

  2. ws 正在处理这条路径。称呼next(true)- 这会告诉你ws处理握手,然后触发connection event.

  3. 没有人处理此请求。称呼next(false)- 这告诉ws关闭连接。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在同一端口但不同路径上同时使用socketio和ws 的相关文章

随机推荐