我正在使用WebRtc和Socket.io进行视频聊天编码。 要开始呼叫,您必须创建一个会议室,服务器会收到会议室ID,创建会议室并让您加入。现在,我想发送广播消息,让其他客户知道已经创建了一个房间,他们可以通过按按钮加入。
这是创建房间的代码:
1。
//client side
function createRoom(){
var room = window.location.hash = randomToken();
socket.emit('create or join', room);
}
2。
//server side
socket.on('create or join', function(room) {
log('Received request to create or join room ' + room);
var clientsInRoom = io.sockets.adapter.rooms[room];
var numClients = clientsInRoom ? Object.keys(clientsInRoom.sockets).length : 0;
log('Room ' + room + ' now has ' + (numClients + 1) + ' client(s)');
if (numClients === 0) {
socket.join(room);
log('Client ID ' + socket.id + ' created room ' + room);
socket.emit('created', room, socket.id);
} else if (numClients === 1) {
log('Client ID ' + socket.id + ' joined room ' + room);
// io.sockets.in(room).emit('join', room);
socket.join(room);
socket.emit('joined', room, socket.id);
io.sockets.in(room).emit('ready', room);
socket.broadcast.emit('ready', room);
} else { // max two clients
socket.emit('full', room);
}
});
3。
//client side again
socket.on('created', function(room, clientId) {
console.log('Created room', room, '- my client ID is', clientId);
isInitiator = true;
socket.emit('readyToJoin', room);
grabWebCamVideo();
});
如您所见,我已经检查了会议室中的客户数量,因此,如果您尝试创建一个已经创建的会议室,您将加入该会议室。
基本上,当我创建一个会议室时,我想向连接的其他客户端发送广播消息,也向他们发送roomId,因此他们中的第一个按下“ JoinRoom”按钮的用户就有效地加入了。
我尝试添加“ .broadcast”。在服务器端( socket.broadcast.emit('created',room,socket.id); ),但是它对我不起作用,如果起作用,我不知道如何将房间变量保存在客户端。 我的joinRoom按钮如下所示:
function joinRoom(){
var roomId = room;
socket.emit('create or join', roomId);
}
感谢您的帮助