socket.io动态发送和重新建立消息

时间:2014-09-05 00:35:02

标签: sockets websocket socket.io

如何向动态房间发送消息,当服务器收到该消息时,将该消息发送给同一房间以供其他成员使用?

table_id是空间,它将动态设置..

客户端:

var table_id = 1; // example, python will give this value

var socket = io('http://localhost:3000');
socket.on('connect', function() {
    console.log('Connected');
    socket.emit('join', "table_"+table_id);
});

socket.on("table_"+table_id, function(data) {
   console.log('New data:', data);
});

$('button').on('click', function(){
    // send message to that room
});

服务器:

io.on('connection', function(socket){

  socket.on('join', function(table) {
    console.log('joined to table '+table);
    socket.join(table);
  });

  // when receive message from particular room, send it back to others in same room

});

1 个答案:

答案 0 :(得分:1)

也许您需要名称空间,而不是房间。 您可以在一个名称空间中为此会议室中的所有成员广播事件。

http://socket.io/docs/rooms-and-namespaces/

但是如果你想做经典聊天消息,只需向整个房间广播消息:

io.to('some room').emit('some event');

例如:

io.on('connection', function(socket){
    socket.on('join', function(table) {
        console.log('joined to table '+table);
        socket._room = table
        socket.join(table);
    });
    // when receive message from particular room, send it back to others in same room
    socket.on('message', function(message) {
        io.to(socket._room).emit('some event',message);
    });
});

客户方:

$('button').on('click', function(){
    // send message to that room
    socket.emit('message', $('.message').val());
});