我的路线设置为app.get('/page/:id')
我希望这些ID中的每一个都有自己的套接字,但我不知道该怎么做。
这是我到目前为止所做的。
app.js:
var server = app.listen(3000, function() {
console.log('Server started on port 3000');
});
var discussionServer = require('./lib/discussion-server.js');
discussionServer.listen(server, 'Default');
讨论-server.js:
var socketio = require('socket.io');
exports.listen = function(server, room) {
io = socketio.listen(server);
var io = require('socket.io').listen(server);
io.on('connection', function(socket) {
socket.join(room);
socket.on('message', function(message) {
io.to(room).emit('message', message);
});
});
}
现在套接字io连接正常,但显然我的应用中的每个ID都是相同的空间,因为我从不更换房间。
我希望能够根据路由中的id
将值传递给套接字io连接,这样每条路由都会有一个唯一的套接字。因此,我希望传递路径的ID,而不是'Default'
中的discussionServer.listen(server, 'Default')
。
答案 0 :(得分:2)
你可以从前端发出你想加入的room
,如:
var room = getRoom();
io.connect().emit('join room', {room: room});
然后在后端:
socket.on('join room', function (data) {
socket.join(data.room);
...
}
希望这有帮助!