我正在尝试将消息从一个名称空间发送到另一个名称空间(在连接上)。 贝娄是一些示例代码,说明了我如何尝试使用它。
[服务器]
// Namespaces
var users_ns = io.of('/users');
var machines_ns = io.of('/machines');
// Attempt to receive the event on the socket
users_ns.on('connection', function(socket){
socket.on('test', function(socket){
console.log('socket test');
});
});
// Attempt to receive the event on the namespace
users_ns.on('test', function(socket){
console.log('namespace test');
});
// Emit an event to the 'users' namespace
machines_ns.on('connection', function(socket){
users_ns.emit('test');
});
[Client1]
var socket = io('http://localhost/users');
[Client2]
var socket = io('http://localhost/machines');
有人知道为什么这行不通吗?
答案 0 :(得分:1)
您的服务器代码正确,但是发生了一些误解。
[服务器]
// Namespaces
var users_ns = io.of('/users');
var machines_ns = io.of('/machines');
// Attempt to receive the event on the socket
users_ns.on('connection', function(socket){
socket.on('test', function(){
console.log('socket test');
});
});
// Emit an event to the 'users' namespace
machines_ns.on('connection', function(socket){
users_ns.emit('test');
});
当广播到users_ns套接字时,此事件在客户端而不是服务器端收到。所以这是正确的客户端代码
[Client1]
var socket = io('http://localhost/users');
socket.on('test',function(){ alert('broadcast received');});
[Client2]
var socket = io('http://localhost/machines');
当一个套接字连接到计算机名称空间时,所有连接到用户名称空间的客户端都将发出“广播已接收”警报。