我正在创建一个REST API,它与路由和类似的操作一起工作
/api/route/action
. 但我想添加WebSocket功能。所以我希望WebSockets也可以通过URL寻址。
我有这个代码:
const socketio = require('socket.io');
//server is a http.createServer()
module.exports = server => {
const io = socketio(server, { route: '/socketapi/test' );
io.on('connection', s => {
s.on('a', () => s.emit('b'));
s.emit('message', 'You connected to /test.');
});
const io2 = socketio(server, { route: '/socketapi/something_else' });
io2.on('connection', s => {
s.on('z', () => s.emit('y'));
s.emit('message', 'Hi');
});
};
我之所以要拆分它们,是因为我不必跟踪已经使用过的事件名称,这样我就可以分离连接事件中的逻辑。
但这似乎是不可能的。如果我有两个socket.io实例在运行,我也无法连接到任何一个。
这是可能的,还是我必须使用一些技巧,或者客户可以发送一个事件来让我知道它想要订阅什么?