【发布时间】:2018-03-22 11:23:27
【问题描述】:
问候,以前我用以下方式创建了 rom "/other_room":
io.of('/other_room');
然后在我这样做之后:
socket.on('MessageFromClient_Change_Of_ROOM', function(msj){
// yes!, I validate var msj == '/other_room'
console.log('before: ' + socket.nsp['name']);
socket.join(msj);
console.log('after: ' + socket.nsp['name']);
}
但永远是我的控制台打印:
before: /
after: /
为什么这个套接字永远不会更改为“/other_room”???
谢谢
版本/添加:
这是我的“代码:
var io = require('socket.io').listen(6969);
io.sockets.on('connection', function(socket){
clientes ++;
server.sockets.emit('eventCONEX', clientes);
// here my lines of code with "events" ...
// then ALL "new connection" by default go into '/'...
// then all "new connection" have assigned the namespace "/"
});
请:我如何将用户从“此默认 [/]”传输/移动到“个性化”??
我有一群客户:A、B、C、E、...、Z
然后当我使用时:
io.sockets.emit('My Event', the_info);
远程客户端的窗口浏览器,默认向所有连接到“/”或socket/room/namespace的客户端显示“the_info”。
我需要用户可以创建“Room_created_by_A”或“Room_created_by_B”...
我相信了指示:
socket.join(new_name);
方法是否正确,但现在我明白不正确。
然后当客户端发送消息“create_new_room”时,我运行以下行:
function list_of_rooms(){
s = '';
for(S in server.nsps)s += S + '\n';
return s;
}
server.of(msj);
server.of(socket.nsp['name']).emit('F5_rooms', list_of_rooms());
我试试新解释:
当客户端 A 创建“房间”[thecnology] 时,我的代码/程序运行更新“list_of_rooms()”,然后一些客户端如 F、G、H 可以转到房间 [thecnology]。
然后因为组 {A,F,G,H} 进入房间 [thecnology],如果他们发送消息,只有组 {A,F,G,H} 收到消息,因为消息或“多播”只是为了客户进入[thecnology]。
我相信此消息/多播可以通过:
server.of(socket.nsp['name']).emit('new_message_to_this_group', message);
新,感谢帮助; (我相信也许没有授权说谢谢)
【问题讨论】:
-
不清楚你在问什么。
io.of('/other_room');不会创建房间。这将为您提供一个命名空间对象,该对象允许您与连接到该特定命名空间的任何连接进行通信。与房间完全无关。您似乎混淆了房间和名称空间。它们是不同的东西。 -
感谢您的帮助。当我运行时: for(S in server.nsps)console.log(S) 我看到“每个房间的名称”,只看到房间'/'和其他......就像说socket.io/docs/rooms-and-namespaces(我们称默认命名空间/和...)当然我错了,那么请任何帮助都是非常受欢迎的...哦!然后是socket.join(msj);创建 OTHER NAMESPACE,没有其他房间??
-
您必须用文字解释您要完成的工作,然后我可能会向您展示正确的代码。但是您需要清楚地描述您要完成的工作并编辑您的问题以说明这一点。
-
非常感谢您的耐心等待。我相信知道 {socket.id} 是每个客户端的 id...然后如果我有 10 个客户端连接,并且 [room] 默认为“/”(socket.io/docs/rooms-and-namespaces)我喜欢一些客户端创建其他 [room]名称与“/”不同,然后是任何 {socket.id} 转到“new_room”,然后如果任何客户端向“new_room”发送消息,只有 {socket.id} 连接到“new_room”才能接收发送到“new_room”的消息”。 (我相信该消息是通过 io.of(socket.nsp['name']).emit('event', msj); 发送的;最近感谢。
-
你有反对票和接近票。请解决您的问题,因为我已多次建议您避免获得更多反对票并避免关闭您的问题。你现在写的问题不清楚,需要修复才能清楚。这就是堆栈溢出的工作原理。这里只允许提出好的、清晰的、主题相关的问题。如果您收到反馈说您的问题不清楚,您需要立即解决。