1

我正在尝试使用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对象。

4

2 回答 2

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 可能不包含在使用sailsnew命令的默认生成的应用程序中
  • 这只是一个展示如何完成的示例,您可能需要根据您的需要对其进行调整。

希望这可以帮助。

于 2014-01-16T15:51:08.820 回答
0

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

关联

于 2013-08-28T12:53:13.783 回答