小编Tre*_*son的帖子

Socket.io“无效的帧头”错误与独立的websocket服务器

有没有办法让单独的 websocket 服务器socket.io在不同的路径上工作?

let http = require('http');
let express = require('express');
let socketio = require('socket.io');
let websocket = require('ws');

let httpServer = http.createServer();

let expressApp = express();
httpServer.on('request', expressApp);

let socketioServer = socketio(httpServer, { path: '/aaaaa/socket.io/' });
socketioServer.of('/').on('connect', () => {});

let websocketServer = new websocket.Server({ server: httpServer, path: '/aaaaa/graphql' });

httpServer.listen(2233, () => console.log('started'));
Run Code Online (Sandbox Code Playgroud)

我看到的行为是,当创建一个单独的 websocket 服务器时,它socket.io仍然可以正常运行,但不会升级到 websocket 的连接并且失败并出现错误(来自 chrome):

WebSocket connection to 'ws://localhost:2233/aaaaa/socket.io/?EIO=3&transport=websocket&sid=fx4pOT0cegz65JMCAAAB' failed: Invalid frame header
Run Code Online (Sandbox Code Playgroud)

需要明确的是,如果省略 websocket 服务器行,则socket.io可以正常工作。

我的具体用例是apollo-server-express …

websocket node.js socket.io engine.io apollo-server

5
推荐指数
1
解决办法
3258
查看次数

标签 统计

apollo-server ×1

engine.io ×1

node.js ×1

socket.io ×1

websocket ×1