有没有一种方法可以让一个独立的websocket服务器在不同的路径上与
我看到的现象是,当创建一个独立的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'));
我看到的现象是,当创建一个独立的websocket服务器时,
socket.io
仍然能够正常工作,但无法将连接升级为websocket,并显示错误(来自chrome):WebSocket connection to 'ws://localhost:2233/aaaaa/socket.io/?EIO=3&transport=websocket&sid=fx4pOT0cegz65JMCAAAB' failed: Invalid frame header
要明确的是,如果省略了websocket服务器行,
socket.io
可以正常工作。我的具体用例是在启用订阅时,
apollo-server-express
包创建了一个websocket服务器。是否有一种更友好的方式来配置socket.io
?或者,我相信我可以提供一个websocket服务器供apollo使用,而不是创建一个...我该如何创建呢?用于复制的软件包版本:
node 8.11.1
express 4.16.4
socket.io 2.1.1
ws 6.1.0
ws
不会将路径/aaaaa/socket.io
上的套接字连接委托给socket.io
? - Patrick Robertsws
正常工作,你需要手动实现upgrade
事件来委托 websocket 服务器或基于路径的 socket.io 服务器。 - Patrick Roberts