我遵循简单的服务器:
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。
但新用户对已连接的用户一无所知。
如何将数据传输到新连接的套接字?
答案 0 :(得分:0)
一种解决方案是让服务器向新用户刚刚连接的已连接用户发出事件,然后他们都回复他们的数据然后转到新用户,但更简单的解决方案是存储用户数据当他们连接时,所以当新用户连接时,所有用户的数据都只是一个数据库查询。
答案 1 :(得分:0)
客户端:
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);
});
})