我正在开发一个实时聊天应用程序。我已经构建了一个基本的聊天应用程序但是,我怀疑我是否正确行事?
我正在使用NODE JS + SOCKET IO。我做了什么,每当任何客户端向任何其他客户端发送任何消息时...该消息将发送到套接字服务器&套接字服务器只是向所有其他连接的客户端广播该消息,并提供一些其他详细信息,例如该消息的用户。因此,在任何正确的匹配发生时,在客户端(浏览器)结束时,它会显示消息&它正在发挥作用。
但我在这里的疑问是,这是一个正确的方法吗?因为,我正在向所有连接的客户端广播该消息,而不是将其发送给应该访问的特定客户端。似乎不存在安全风险?
然后,如果我使用收件人&的套接字ID,而不是将该消息广播给所有客户端。只发送给他/她的消息..我应该如何管理一个客户通过不同的设备连接服务的情况,如笔记本电脑,手机,标签?那么,当任何消息传递给他/她时,该消息应该在所有连接的设备中可见?
需要一些关于最佳方法的建议。
谢谢&此致
答案 0 :(得分:0)
您应该存储用户会话(id,socket)
服务器端:
var clientSessions = []
// On connection
sockets.on('connection', function(socket) {
var user = new Object();
user.id = socket.handshake.query.userId;
user.socket = socket;
clientSessions.push(user);
});
客户方:
socketio.connect('http://localhost:3000', {query: 'userId=ABCXYZ'});
答案 1 :(得分:-1)
您可以将所有连接存储在服务器中的数组或其他内容中,然后确定在需要将消息发送到单个客户端时需要向哪个客户端发送消息。