使用socket.io发送实时分析的最佳方法

我正在使用socket.io和node.js / mongoDB的应用程序将发送实时分析ParentsDrivers之间

比方说,司机正在沿着一条path前进,为了每个位置的变化,他会把他的位置发送到一个特定的父母名单。

我可以想到一种方法来实现这样的function

1-我创build了两个数组

 var userSockets = {}; var driverSockets = {}; 

每当用户/驱动程序连接,我做

 For Driver - driverSockets[accId] = socket For User - userSockets[accId] = socket 

现在,如果驾驶员必须发生位置变化,他会做类似的事情

 userSockets[userId].emit(abc) 

我想知道这个方法是否更好? 将用户保存为MongoDB中的onlineUser会更好,但是即使如此,如何访问其套接字来发送数据。

什么是最好的方法。

您应该使用“房间”来存储在线用户,并在发生位置变化时发送到该房间(频道)。

 //join a room(channel) socket.join('online'); //sending to sender client, only if they are in 'online' room(channel) socket.to('online').emit('location', {user_type:'driver'}); 

下面是使用user_type关键字将驱动程序和父母分开排列的示例代码,并将驱动程序位置实时发送给所有父母。 此外,我们可以添加用户手机号码发送特定的驾驶位置给特定的父母等

 var parents = []; var drivers = []; var users = []; io.on('connection', function(socket){ users.push(socket); socket.on('disconnect', function(msg){ var i = users.indexOf(socket); users.splice(i, 1); var j = parents.indexOf(socket); if(j !== -1){ parents.splice(j, 1); } var k = drivers.indexOf(socket); if(k !== -1){ drivers.splice(k, 1); } }); socket.on('register', function(msg){ console.log(msg);//send json- {"user_type":"driver"} var data = JSON.parse(msg); var i = users.indexOf(socket); if(data.user_type === 'driver'){ drivers.push(users[i]); }else{ parents.push(users[i]); } users[i].emit('register', '{"status":"registered"}'); }); socket.on('location', function(msg){ console.log(msg);//send json- {"user_type":"driver","location":"lat,long"} var data = JSON.parse(msg); if(data.user_type === 'driver'){ for(var x=0;x<parents.length;x++){ parents[x].emit('location', '{"user_type":"driver", "location":"lat,long"}'); } } }); });