当“连接”时,Socket.io中的服务器端套接字返回错误的名称空间

我正在使用Socket.io – 1.0.6与快递。

并尝试下面的代码。

服务器

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" }); 

我不知道为什么服务器套接字的namespce总是“/”。

我有什么不对吗?

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

如果您修改您的服务器端代码,如下所示:

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

你会得到你所期望的。

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