套接字IO使用sails js多次发送(等于连接的客户端数量)

时间:2013-08-28 07:15:41

标签: node.js socket.io sails.js

我正在尝试使用sails MVC开发一个简单的基于socket io的聊天应用程序。 每当客户端连接多次发送的套接字(等于客户端数量)。 这是我的代码。

服务器:

io=req.socket.manager;
var users=[];

io.sockets.on('connection', function(client) {
    console.log("connected");

    users.push(client.id);
    client.on("chat", function(data) {
        io.sockets.sockets[data.to].emit("chat", { from: client.id, to: data.to, msg: data.msg });
        client.emit("chat", { from: client.id, to: data.to, msg: data.msg });
    });
});

客户:

var socket=new io.connect('http://localhost:1337/');
socket.request('/Chat/index');
socket.emit('connection',function(data){
    console.log(data);
});
socket.on('connect', function() {
    console.log("Connected.");
    //
});
socket.on('chat', function(data) {
    console.log(data.msg );
});

请帮助我,有没有办法在帆中获得实际的套接字对象? 我正在使用io = req.socket.manager;这是req对象。

2 个答案:

答案 0 :(得分:0)

套接字对象应该可以在服务器端的sails.io中访问

link

答案 1 :(得分:0)

也许你想回答一个独特的socket id?这可以通过这种方式实现:

在文件sockets.js中,在config文件夹中,找到onConnect属性并添加如下代码:

onConnect: function(session, socket){

    sails.io.sockets.socket(socket.id).send('YOUR_EVENT', {'message' : 'your message to a unique socket'}); 
    }

在建立新连接时,它将发送唯一消息。只是几个笔记:

  • 这可以被认为是socket.io问题,而不是sails问题,因为方法.socket(socket.id)是socket.io的一部分
  • 这是在sails v0.9.8上测试过的,在其他版本中,文件sockets.js可能没有包含在带有sa {'{1}}命令的默认生成的应用程序中
  • 这只是一个展示如何完成的示例,您可能需要根据自己的需要进行调整。

希望这有帮助。