如何为路径中的每个id在套接字io中创建一个新房间

时间:2015-06-30 15:44:42

标签: node.js socket.io

我的路线设置为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')

1 个答案:

答案 0 :(得分:2)

你可以从前端发出你想加入的room,如:

var room = getRoom();
io.connect().emit('join room', {room: room});

然后在后端:

socket.on('join room', function (data) {
    socket.join(data.room);
    ...
}

希望这有帮助!