从Socket.IO-Client访问Socket.IO-Server的数据对象



在socket.io服务器中,可以将属性添加到socket.data对象中。如何在客户端(socket.io-client(访问这样的属性?。

//服务器代码

io.on('connection', socket => {
socket.data.customId = getCustomId();
io.emit('connected', {success: 'true'})
})

//客户端代码

socket = io('http://localhost:5000');
socket.on('connected', data => {
console.log('SOCKET_DATA:', socket)
console.log('SOCKET_CUSTOM-ID:', socket.data.customId); // produces 'undefined'
})

我想从客户端访问我在服务器上添加的customId。客户端控制台上显示的socket对象上甚至不存在data属性。

如果您想通过某种方式访问它,您必须创建一些发送到服务器的请求。只有服务器存储该信息。您可以在客户端执行以下操作:

socket.emit("getCustomId", (id) => {
console.log("SOCKET_CUSTOM-ID:", id);
});

然后服务器可以监听并使用自定义id:进行响应

socket.on("getCustomId", (callback) => {
callback(socket.data.customId);
});

服务器端的callback参数连接回socket.emit("getCustomId");调用中声明的未命名ES-6函数,您可以在这里看到关于socket.io回调的SO问题

最新更新