首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从不同的命名空间加入命名空间房间

从不同的命名空间加入命名空间房间
EN

Stack Overflow用户
提问于 2015-12-15 08:53:55
回答 2查看 490关注 0票数 1

所以,我问的差不多就是,我如何才能加入一个“在”不同名称空间内的名称空间?

代码语言:javascript
复制
var mainNamespace = io.of('/main');
var chatNamespace = io.of('/chat');

mainNamespace.on("connection", function (socket) {

    socket.on("somethingHappens", function () {
        // i thought i could do this
        chatNamespace.join("coolRoom", function(){
           console.log("yey i joined the room!");
        })
    });
}

我能以某种方式获得这个吗?谢谢。

EN

回答 2

Stack Overflow用户

发布于 2015-12-15 12:16:51

你不能轻易做到这一点。与房间不同,名称空间不是动态的,并且在连接时确定。例如,您可以在前端调用io.connect('/main');。

一旦建立连接,套接字就属于它所连接到的命名空间。

dynamic namespaces的想法已经存在了一段时间了,并且有一些实现和模块。

票数 0
EN

Stack Overflow用户

发布于 2015-12-15 20:12:00

参考:https://github.com/socketio/socket.io/issues/285#issuecomment-8962287

我还记得,变量socket有一个名为namespace的属性,该属性引用了套接字当前为所在的名称空间。自2012年以来,我不能对API的变化发表意见。

下面的命令应该会让您对内部发生的事情有更多的了解:

代码语言:javascript
复制
console.log( socket.namespace === mainNamespace );
console.log( socket.namespace.name );
console.log( socket.rooms );

我建议尝试手动更改socket.namespace,例如:

socket.namespace = chatNamespace;

如果您不能做到这一点,那么我认为套接字将加入/main/coolRoom,而不是您预期的/chat/coolRoom

对于后人来说,如果其他人有问题,我建议记录上面的console.log语句,并观察当前名称空间名称如何影响.join()方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34279278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档