如何向动态房间发送消息,当服务器收到该消息时,将该消息发送给同一房间以供其他成员使用?
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
});
答案 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());
});