在我的节点应用中,
Invalid Date
这样,我将所有用户的套接字连接存储在服务器中...
#include <stdio.h>
int main()
{
unsigned char tvalue, index;
printf("STARTING...\n");
for(index = 0; index < 128; index++)
{
__asm
{
cli /* Disable interrupts */
mov al, index /* Move index address */
/* since the 0x80 bit of al is not set, */
/* NMI is active */
out 0x70, al /* Copy address to CMOS register */
/* some kind of real delay here is probably best */
in al, 0x71 /* Fetch 1 byte to al */
sti /* Enable interrupts */
mov tvalue, al
}
printf("%u\n", (unsigned int)tvalue);
}
printf("FINISHED!\n");
return 0;
}
获取所有套接字数据的功能
socket.on('test', function (req) {
controller.test(socket, req, 'test');
})
现在我需要发射到特定的套接字,我已经尝试过了,但是遇到了错误。
var userSockets = []; //Used to store all connected users data.
userSockets[user.id] = socket; // Storing whole socket object.
// E.x: userSockets[14] = socket; // Stored like this.
错误:
getUserSocket() {
return userSockets;
}
更新
我有一个功能,可以存储所有用户的套接字数据。
let allUserSocketListData = databaseHelper.getUserSocket();
allUserSocketListData[result.data[0].id].emit('response' , data);
// E.x: allUserSocketListData[14].emit('response' , data);
答案 0 :(得分:0)
命名空间和房间是出于特定原因而构建的,但是当您需要方便的东西而没有额外的代码时,直接发送发射就可以了。
快速方法:
1:您的连接事件应存储套接字ID,而不是整个对象
let socketIds = []
socketServer.on("connection",(socket)=>{
socketIds.push(socket.id)
socket.emit("message", "hey")
})
2:现在,例如,如果仅想在第一个客户端上发送邮件,则应首先检查其是否已注册,然后继续发射。
if (socketServer.sockets.connected.hasOwnProperty(socketIds[0])){
socketServer.sockets.connected[socketIds[0]].emit("message", "hey again")
} else {
console.error("Error: Wrong Id")
}