【发布时间】:2012-04-18 15:54:27
【问题描述】:
过去一周我一直在寻找这个特殊的问题,但由于我找不到任何关于这个主题的信息(那不是过时的),所以我决定做其他事情。但是现在我需要能够使用他们的 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');
【问题讨论】:
-
仅供参考,HTTP 是一种通过 TCP 连接工作的协议。 TCP 是一种使用 IP 的协议,而 IP 又使用(主要)以太网,后者使用电或光信号。
-
啊,谢谢。我只是不想获得 TCP 版本而不是 http 版本的帮助(如果这有所不同的话)。其实我也是不久前才知道的! :)
标签: javascript node.js socket.io