我正在使用nodejs socket-io(服务器)软件包。我知道我可以在建立连接期间使用握手数据来验证用户身份。而且,只要可以获取socket
对象,就可以为握手数据添加一些属性,以供以后使用。
但是在处理io.on
事件时,仅将数据作为参数传递。
io.on('some-channel', data => console.log(data));
我不知道是谁发送了此消息。让客户端告诉服务器的身份显然不是一个好主意。
一个简单的解决方案是监听每个连接的套接字的通道:
io.sockets.on('connect', socket => {
socket.on('some-channel', data => console.log(socket, data));
});
但是,当收听某些频道和用户连接交替发生时,我必须收听为新传入用户预先定义的所有频道,并为每个当前连接的用户收听新频道。这似乎不是一个好习惯。
那么,无论io.on
事件还是其他任何更好的情况下,我如何识别传入消息的用户?