javascript - Node.JS Socket.IO 将数据包发送到特定的连接 ID

标签 javascript node.js socket.io

过去一周我一直在寻找这个特定的问题,但由于我找不到关于这个主题的任何信息(这些信息并没有过时),我只是决定处理其他事情。但是现在我需要能够使用他们的 ID 将数据(我构建的)发送到特定的客户端,这些客户端使用 node.js 和 socket.io 连接到我的服务器。我已经将 ID 存储在每个新连接的对象中。我需要知道的是一种将其发送到我选择的连接 ID 的方法。

类似于:function send(data, client.id) {};

我使用的是 http 服务器,而不是 TCP。

这可能吗?

编辑:

server = http_socket.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.end(respcont);
    client_ip_address = req.header('x-forwarded-for');
    });
socket = io.listen(1337);   // listen
//=============================================
//  Socket event loop
//=============================================
socket.on ('connection', function (client_connect) {
    var client_info = new client_connection_info();     // this just holds information 
    client_info.addNode(client_connect.id, client_connect.remoteAddress, 1); // 1 = trying to connet

    var a = client_info.getNode(client_connect.id,null,null).socket_id; // an object holding the information.  this function just gets the socket_id
    client_connect.socket(a).emit('message', 'hi');

    client_connect.on('message', function (data) {
         });
    client_connect.on ('disconnect', function () {

    );
});

解决方案:我只是通过实验弄明白了...您需要做的是确保存储 SOCKET 而不是 socket.id(就像我正在做的那样)并改用它。

client_info.addNode(client_connect.id, client_connect.remoteAddress, client_connect, 1)

var a = client_info.getNode(client_connect.id,null,null,null).socket;
    a.emit('message', 'hi');

最佳答案

如果您需要这样做,最简单的做法是构建和维护一个将 id 映射到连接的全局关联数组:然后您可以在需要时查找适当的连接,只需使用常规发送函数即可。您需要一些逻辑来从数组中删除连接,但这应该不会太痛苦。

关于javascript - Node.JS Socket.IO 将数据包发送到特定的连接 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10203123/

相关文章:

javascript - JQueryUI 在选项中添加图像

javascript - 为什么 onclick 事件不适用于 vue-router?

node.js - nodejs + nginx 在使用 https 模块而不是 http 时出现 502 错误

node.js - Node socket.io,有什么可以防止泛滥的吗?

node.js - 准确跟踪#open sockets via redis

Javascript:一个包装类(在 ES5 中)

node.js - Node + Express + Passport : req. 用户未定义

node.js - 有没有办法在客户端计算机中永久缓存文件?

node.js - Socket.io 聊天应用程序在我发送消息时刷新

javascript - React-Share 无法分享 LinkedIn 文章