是否有任何唯一ID或每个客户的东西? 假设我想使用此echo服务器将从一个客户端收到的消息回送给所有连接的客户端:
var net = require('net');
var server = net.createServer();
server.on('connection', function (server_socket) {
console.log('client connected');
server_socket.write('hello client! Say something.');
server_socket.pipe(server_socket);
server_socket.on('end', function () {
console.log('client disconnected');
});
});
server.listen(80, 'localhost');
server.on('listen', function () {
console.log('Listning for connections:');
});
server.on('error', function (error) {
console.dir(error);
});
我尝试了我所知道的一切,即 连接,请求等事件。
答案 0 :(得分:0)
如果您使用socket.io,这将非常简单。您需要检查socket-object的属性id:
server.on('connection', function(socket) {
console.log(socket.id + " connected");
});
只要你使用原始套接字就可以选择在connect上生成一个id,其中函数 generateUniqueSocketId()可以返回一个GUID或一些唯一的东西来区分连接:
server.on('connection', function(socket) {
socket.myConnectionId = generateUniqueSocketId();
});
答案 1 :(得分:0)
出于您的目的,您实际上并不需要UID,您可以尝试将所有活动连接保留在阵列中并在需要时广播任何数据。
var connections = [];
server.on('connection', function (socket) {
connections.push(socket);
socket.write('SOMETHING');
// Broadcast some message
connections.forEach(function (connection) {
if (connection !== socket) { // Filter connections
connection.write('SOMETHING ELSE');
}
});
// Clean up closed connections
socket.on('close', function () {
var index = connections.indexOf(socket); // Get socket index
connections.splice(index, 1); // Remove the socket from the connections
});
});