Javascript 在Socket.io中创建文件室
我想请你帮忙。我在socket.io的客户端遇到了困难,我想在客户端调用以下代码以在socket.io中创建一个文件室:Javascript 在Socket.io中创建文件室,javascript,node.js,sockets,socket.io,Javascript,Node.js,Sockets,Socket.io,我想请你帮忙。我在socket.io的客户端遇到了困难,我想在客户端调用以下代码以在socket.io中创建一个文件室: var rooms = []; socket.on('create', function (roomname) { rooms[room] = room; socket.room = roomname; socket.join(roomname); subscribe.subscribe(socket.room); }); 我
var rooms = [];
socket.on('create', function (roomname) {
rooms[room] = room;
socket.room = roomname;
socket.join(roomname);
subscribe.subscribe(socket.room);
});
我不知道这是否正确,如果不正确,请帮我纠正这个家伙。我在NodeJS和sockets中不是那么专业,但我已经阅读了他们的Wiki。是否有任何可能的方法来创建文件室?Socket.IO中的文件室不需要创建,一个文件室是在套接字连接它时创建的。它们在服务器端连接,因此您必须指示服务器使用客户端
socket.on('create', function (room) {
socket.join(room);
});
在上面的示例中,使用变量room
中指定的名称创建了一个文件室。您不需要将此房间对象存储在任何位置,因为它已经是io
对象的一部分。然后可以将该房间视为其自己的套接字实例
io.sockets.in(room).emit('event', data);
因此,要从客户端创建一个房间,它可能是这样的:
// client side code
var socket = io.connect();
socket.emit('create', 'room1');
// server side code
io.sockets.on('connection', function(socket) {
socket.on('create', function(room) {
socket.join(room);
});
});
除非
room
是一个非负整数(我对此表示怀疑),否则您可能不是指room=[]
。谢谢。嗯。在上面的代码中,我将房间存储到房间中,以便将房间列出。我刚刚编辑了Michael Mukhin的,因此创建的房间将添加到列表中。@您说:您不需要将此房间对象存储在任何位置
,重新启动服务器后,如何恢复创建的房间?@mahdipishguy当套接字加入房间时,将创建一个房间,因此,您需要在服务器停止之前存储套接字所在的房间,然后让所有套接字重新加入旧房间,以便重新创建它们。如果这是你必须经常做的事情,那么很可能你试图用房间做的事情并不是它的设计目的。我不知道你为什么坚持使用io.sockets.in(room.emit('event',data))在您的示例中,您不知道io
、sockets
和实例中的从何而来?这些是在哪里创建的?我刚刚看到我们有socket
global变量,你能解释一下吗?