http请求后的Socket.IO帧头无效
Posted
技术标签:
【中文标题】http请求后的Socket.IO帧头无效【英文标题】:Socket.IO Invalid frame header after http Reqest 【发布时间】:2019-04-23 03:13:20 【问题描述】:我有一个 nodejs express Rest API,我想添加 websocket 支持。 我在 api 部分使用this 样板,并添加了this library 和 socket.io 以在同一个项目中使用 websockets(我不确定它是否重要)。
我的 websocket 在没有 Rest API 的情况下按预期工作,但是一旦我向我的 API 发出 http 请求,与 websocket 的连接就会失败,并出现以下错误:
到 'ws://localhost:3000/socket.io/?EIO=3&transport=websocket' 的 WebSocket 连接失败:帧头无效
虽然已经建立的连接仍然有效。 这个问题一直存在,直到我重新启动我的服务器。
我发现了很多不同的可能导致此错误的原因,但没有一个对我有真正帮助。
编辑: 这就是我连接到 websockets 的方式。
const rooms = io.connect(
'http://localhost:3000/rooms',
transports: ['websocket']
);
【问题讨论】:
【参考方案1】:我通过将堆栈切换到nestjs 解决了这个问题。 问题可能是因为 websocket 和 rest api 都在同一个端口上运行
【讨论】:
以上是关于http请求后的Socket.IO帧头无效的主要内容,如果未能解决你的问题,请参考以下文章