Socket.io房间/命名空间 - 可能是通配符?

时间:2016-11-23 10:26:07

标签: javascript node.js sockets express socket.io

我有以下层次结构:Store -> Manager -> Assistant

Manager可以访问Assistant发送的所有内容,Assistant只能访问Manager专门提供的内容。

据我所知,我可以创建namespaces or rooms,例如名为manager_assistant1manager_assistant2等。

结果:Assistant(id:1)收听manager_assistant1。没关系。但是Manager呢?是否可以收听manager_*

我当前的客户端只是监听流并输出发送到它或从中发送的数据。那很糟糕。

服务器

var server = require('http').createServer();
var io = require('socket.io')(server);
io.on('connection', function(client){
    client.on('myEvent', function(data) {

        // do something with the data
        // ...

        // return the modified data
        io.emit('myEvent', data);
    });
});

server.listen(3000, function(){
    console.log('listening on port 3000');
});

客户

var socket = io.connect('http://example.com:3000/');
socket.emit('myEvent', {
    from: 'assistant1',
    to: 'manager',
    key: 'value'
});

socket.on('myEvent', function(data) {
    var user = 'assistant1'; // or 'manager', 'assistant2', ...
    if (data.from == user || data.to == user) { 
        console.log(data.key); 
    }
});

有什么想法吗?提前谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用频道创建更高级别的逻辑,并尝试在json中发送您的业务数据,例如。

尝试像那样查看包裹 https://www.npmjs.com/package/sockjs-rooms