我有一个nodejs Express Rest API,我想添加websocket支持。 我在API部分使用了this样板,并添加了this库和socket.io以在同一项目中使用websocket(我不确定是否重要)。
在没有Rest API的情况下,我的websockets可以正常工作,但是一旦我向我的API发出http请求,则与websocket的连接就会失败,并出现以下错误:
与'ws:// localhost:3000 / socket.io /?EIO = 3&transport = websocket'的WebSocket连接失败:无效的帧头
虽然已经建立的连接仍然有效。 在我重新启动服务器之前,该问题一直存在。
我发现了很多导致此错误的可能原因,但没有一个真正帮助了我。
编辑: 这就是我连接到网络套接字的方式。
const rooms = io.connect(
'http://localhost:3000/rooms',
{ transports: ['websocket'] }
);
答案 0 :(得分:0)
我通过将堆栈切换到nestjs解决了这个问题。 问题可能是因为websocket和rest api都在同一端口上运行