node.js和socket.io - 如何保持数据从连接到新连接的用户?

时间:2013-12-29 14:55:23

标签: ios node.js sockets

我遵循简单的服务器:

var io = require('socket.io').listen(1234);

io.sockets.on('connection', function (socket) {
    // Incoming
    socket.on('this_user_data', function (data) {
        console.log(data);
        // Outgoing (to all but socket)
        socket.broadcast.emit('other_user_data', data);
    });
});

客户:

            var socket = io.connect('', {port: 1234});

            // Incoming
            socket.on('other_user_data', function(data) {
                console.dir(data);
            });

            // Outgoing
            socket.emit('this_user_data', { my : 'data' });

这完美无缺。已连接的用户获取新连接用户的my_data。

但新用户对已连接的用户一无所知。

如何将数据传输到新连接的套接字?

2 个答案:

答案 0 :(得分:0)

一种解决方案是让服务器向新用户刚刚连接的已连接用户发出事件,然后他们都回复他们的数据然后转到新用户,但更简单的解决方案是存储用户数据当他们连接时,所以当新用户连接时,所有用户的数据都只是一个数据库查询。

答案 1 :(得分:0)

  1. 将所有用户的数据保存在内存(或数据库)中。
  2. 当新客户端连接时,发出事件以检索其他用户的数据。就像这样:
  3. 客户端:

    socket.emit('retrieve-other-users-data', {/* SOME DATA */}, function (responseData) {
      // DO SOMETHING WITH responseData
    })
    

    服务器:

    io.sockets.on("connection", function (socket) {
      socket.on("retrieve-other-users-data", function (requestData, callback) {
        var otherUsersData = getOtherUserData();
        callback(otherUsersData);
      });
    })