在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问题