有没有办法在某些客户端执行命令后为其设置 socket.io 监听器?例如:
socket.on('setupServer', function (data) {
console.log("setupServer called");
// Now set up listeners
socket.on('serverAction', function (data) {
console.log('Listener for clients calling setupServer');
});
});
在上面,客户端已连接并向 node.js 服务器发出“setupServer”命令。服务器现在监听来自特定客户端的“serverAction”。如果不先调用“setupServer”,其他客户端将无法使用“serverAction”。
最佳答案
您可以创建一个 room并验证来自用户的一些数据,然后将这些用户加入该房间,然后向该房间中的用户发出一些事件。
类似这样的事情。
server.js
var io = require('socket.io')(server);
io.on('connection',function(socket){
socket.emit('auth_user')
socket.on('response_from_user',function(data){
if(data.name === "Blashadow"){
//join that user to the room
socket.join('/room',function(){
//emit some custom event to users in that room
io.in('/room').emit('custom_event_room', { info: 'new used connected from room' });
});
}
});
});
client.html
var socket = io('localhost');
socket.on('auth_user', function (data) {
socket.emit('response_from_user', { name : "Blashadow" });
});
socket.on('custom_event_room',function(data){
console.log(data);
});
关于node.js - 在客户端操作后公开 socket.io 监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31850299/