【发布时间】:2018-07-26 21:16:15
【问题描述】:
我正在制作一个 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 实例正在运行,我无法连接到任何一个。
这可能吗,还是我必须使用一些技巧,也许客户端可以发送一个事件让我知道它想要订阅什么?
【问题讨论】:
标签: node.js rest http socket.io