当连接'时,Socket.io中的服务器端套接字返回错误的命名空间。

时间:2014-07-12 11:59:53

标签: node.js namespaces socket.io

我使用Socket.io - 1.0.6 with express。

并尝试下面的代码。

服务器

var io = require('socket.io')(http);
io.on('connect', function(socket){
     console.log("server nsp->%s", socket.nsp.name);  
     //<-- printed always "server nsp->/", In my thought, it should print "/custom_nsp".
});

客户端

var socket = io.connect("http://mysocket.io/custom_nsp");
socket.on('connect', function(){
     console.log("client nsp->%s", socket.nsp);   
     //<-- printed correctly "client nsp->/custom_nsp"
});

我不知道为什么服务器套接字的名称scce总是&#34; /&#34;。

我有什么不对吗?

1 个答案:

答案 0 :(得分:0)

这是因为必须使用.of方法执行自定义命名空间处理(请参阅docs)。

如果您按如下方式修改服务器端代码:

io.of('/custom_nsp').on('connect', function(socket) {
    console.log("server nsp->%s", socket.nsp.name);  //server nsp->/custom_nsp
});

你会得到你期望的。

但是,即使连接到/custom_nsp,默认命名空间处理程序也会触发,但仍然不清楚。