我需要知道给定 socket.emit()
的当前套接字 ID 和该套接字的索引以及给定命名空间中相应的 socket.on()
和room,但我在 socket.io 文档中找不到如何执行此操作的良好引用。
例如:
客户端
socket.emit('myMessage', myVar);
服务器
socket.on('myMessage', function(myVar){
//Need the socket id of the client who just emitted
//and whether or not they are the first socket, second socket, third socket, etc.
// e.g. something like:
currentSocketID = io.socket.connected[socketid]; //?? what is the correct syntax?
currentSocketIndex = io.socket.connected[index[i]]; //?? what is correct syntax?
});
这不是 How can I get the socket ID from an event in Socket.io? 的重复项因为我特别需要评估谁是第一个套接字,第二个套接字等,然后根据该信息执行一些操作。您链接的堆栈只是解释了如何处理新消息,这不是我的问题。我需要处理一条新消息并显示发射器的实际套接字 ID 和套接字索引。
最佳答案
在此代码中的回调中:
socket.on('myMessage', function(myVar){
// can just use socket.id
});
我认为可能是这样的:
io.on('connection', function(socket) {
socket.on('myMessage', function(myVar){
// can just use socket.id
});
});
您拥有发出消息的客户端的 socket
对象(socket
变量可能仍在范围内),因此您可以直接访问 socket.id
获取该套接字的 id。
您还要求一个索引
,但您没有说索引是什么? socket.io 中有各种数据结构来跟踪房间和命名空间中的套接字列表。有些是数组(所以它们有顺序),有些是映射(所以它们实际上没有顺序)。据我所知,socket.io 没有提供任何有关跟踪房间或命名空间中套接字的某些顺序的文档。如果您更详细地解释您要使用索引执行的操作,我们也许能够告诉您更多有关哪些现有数据结构可能适合您的信息,或者建议您如何自己跟踪此顺序。
关于node.js - 获取发射套接字的当前套接字 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43506950/