如何发出套接字到特定的套接字连接?

时间:2019-06-16 08:17:52

标签: node.js socket.io

在我的节点应用中,

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);

1 个答案:

答案 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")
}