我使用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种情况:
socket.io 正在处理此路径。从函数返回没有
下一个呼叫。这告诉ws
既不关闭连接也不
尝试处理它。
ws 正在处理这条路径。称呼next(true)
- 这会告诉你ws
处理握手,然后触发connection
event.
没有人处理此请求。称呼next(false)
- 这告诉ws
关闭连接。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)