如何使用Socket.IO创建多个套接字?

时间:2014-10-30 20:47:35

标签: javascript node.js websocket socket.io socket.io-1.0

我不知道如何向你提出这个问题。实际上我正在创建一个需要以下内容的应用程序:

  • 许多用户将在此应用中注册。
  • 每个用户都将与一个或多个群组相关联
  • 我希望特定群组的成员使用io.emit()
  • 向其他群组成员广播消息

我有以下代码:

var app=require('express')();
var http=require('http').Server(app);
var io=require('socket.io')(http);

app.get('/', function(req, res){
  res.sendFile(__dirname +'/index.html');
});
io.use(function(socket,next){
    var handShakeData=socket.request;
    query1=handShakeData._query['groupId'];
    query2=handShakeData._query['message'];
    next();
});

io.on('connection',function(socket){
    console.log('A user connnected');
    io.emit('emittedMessages','A User Connected: '+query1+"  "+query2);
    socket.on('disconnect', function(){
         io.emit('emittedMessages','A User Disconnected');
         console.log('A user disconnected');
    });     
});


http.listen(3000,function(){
   console.log('Listening oon Port: 3000');
});

这是我的index.html文件:

<script src="/socket.io/socket.io.js"></script>
<script src="http://code.jquery.com/jquery-1.11.1.js"></script>
<script>
  var socket = io('http://localhost:3000',{query:"groupId=bar&message=bar2"});
  socket.connect();

  socket.on('emittedMessages',function(msg){
     $('body').append('<br/>'+msg);
  });
</script>

问题

此代码的问题在于,无论我做什么,它都会向每个群组中的每个人发送消息。如何隔离不同组的不同用户以连接到不同的节点/套接字,以便我可以将消息广播到特定的组中。

我很抱歉如果我无法正确提出问题。如果您有任何疑问,请询问我。 任何帮助都非常感谢。

0 个答案:

没有答案