有什么方法可以在连接到服务器时找到套接字的命名空间或客户端URL吗?
客户端:
var socket = io.connect('/ns1');
服务器:
io.sockets.on('connection', function(socket){
//socket.something.namespace?
});
我已经广泛地查看了套接字的对象结构,但是对命名空间的任何引用都只有" name" :" /"或列出所有服务器的命名空间,而不是单个套接字的命名空间。
同样的URL也是如此。我只能在header referrer中找到它,但这可能不如真正的URL引用那么健壮。
答案 0 :(得分:2)
socket.io guide使用这种方式监听命名空间上的连接:
var nsp = io.of('/my-namespace');
nsp.on('connection', function(socket){
console.log('someone connected'):
});
它还将“io.sockets”称为默认命名空间。因此,当“io.sockets.on('connection'”方法被触发时,您将进入默认命名空间。Related
编辑: 从动态创建的命名空间接收连接也非常简单。我认为这解决了你的初步问题。
另一个编辑:命名空间当然也可以在套接字this.nsp.name
中访问:
function registerNamespace(name){
var nsp = io.of(name);
nsp.on('connection', function(socket){
console.log("I am in namespace: " + this.name);
socket.on('hello', function () {
console.log("Hello in namespace: " + this.nsp.name);
});
socket.on('disconnect', function () {
console.log("I was in namespace: " + this.nsp.name);
});
});
}
registerNamespace("/name2");
registerNamespace("/name1");