socket.io 服务端想给指定的客户端建立连接发送消息,但是代码敲出来没有连接
//客户端
socket.emit("sendMsg", msg);
socket.on('sendMsg',(data)=>{
console.log(data);
});
//服务端
socket.on('sendMsg', (data) => {
var toUser = data.toUser
var fromUser = data.fromUser
// 查询该用户是否在线
SQLhelper(`select * from user where online_state = 1 and _id=${toUser._id}`).then(ret => {
// 在线直接发送消息
if (ret[0]) {
//向好友发送消息
let toId = ret[0]._id
socket.to(toId).emit('sendMsg', data)
//保存聊天数据
SQLhelper(`
insert into chat(fromUser,toUser,content,date,isRead)
values ('${fromUser._id}','${toUser._id}','${data.content}',${data.date},1)`)
}
//没在线将消息保存到数据库
else {
SQLhelper(`
insert into chat(fromUser,toUser,content,date,isRead)
values ('${fromUser._id}','${toUser._id}','${data.content}',${data.date},0)`)
}
})
})
服务端并没有向指定id的客户端发送数据
我有个问题,就是我socket.to(id).emit('sendMsg',data),服务端怎么知道我是发送给这个id的用户啊,还有我把socket.to(id).emit('sendMsg',data)改为io.emit('sendMsg',data)可以广播出去,然后接收到,但是发送过去的数据就会有和很多个重复的数据,这是怎么回事
前后端能指定用户建立起连接