我有一个clientid和用户名,我希望他们都用套接字发送。
client.userid = userid;
client.username = username;
client.emit('onconnected', { id: client.userid, name: client.username });
我试过这个例子,但它似乎不起作用
答案 0 :(得分:17)
你可以试试这个
io.sockets.on('connection', function (socket) {
socket.on('event_name', function(data) {
// you can try one of these three options
// this is used to send to all connecting sockets
io.sockets.emit('eventToClient', { id: userid, name: username });
// this is used to send to all connecting sockets except the sending one
socket.broadcast.emit('eventToClient',{ id: userid, name: username });
// this is used to the sending one
socket.emit('eventToClient',{ id: userid, name: username });
}
}
并在客户端
socket.on('eventToClient',function(data) {
// do something with data
var id = data.id
var name = data.name // here, it should be data.name instead of data.username
});
答案 1 :(得分:6)
尝试整体发送对象:
$('form').submit(function(){
var loginDetails={
userid : userid,
username : username
};
client.emit('sentMsg',loginDetails);
}
答案 2 :(得分:2)
您应该将对象传递给套接字事件。
在服务器端:
socket.emit('your-event', { name: 'Whatever', age: 18 })
在客户端:
socket.on('your-event', ({ name, age }) => {
// name: Whatever
// age: 18
})