有没有办法让单独的 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 …