从 Socket.IO-客户端访问 Socket.IO-服务器的数据对象
Accessing The Data Object of Socket.IO-Server From The Socket.IO-Client
在 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
。 data
属性甚至不存在于客户端控制台上显示的 socket
对象上。
如有任何帮助,我们将不胜感激
如果您想通过某种方式访问它,则必须创建一些发送到服务器的请求。只有服务器存储该信息。您可以在客户端执行类似以下操作:
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 函数,您可以在这个关于 [的 SO 问题上看到 here =14=] 回调
在 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
。 data
属性甚至不存在于客户端控制台上显示的 socket
对象上。
如有任何帮助,我们将不胜感激
如果您想通过某种方式访问它,则必须创建一些发送到服务器的请求。只有服务器存储该信息。您可以在客户端执行类似以下操作:
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 函数,您可以在这个关于 [的 SO 问题上看到 here =14=] 回调