首页 > 解决方案 > TLS 到多个客户端和不同的消息

问题描述

我正在规划一个基于 tcp 的安全系统。我想用 TLS/SSL 保护它。我想让一个客户端向服务器发送一条消息,服务器必须检查它并向所有其他客户端发送一条消息。我认为目前尚不清楚如何处理,因为 node.js tls 的文档仅显示了您如何连接到服务器并返回消息。

这是文档的代码:

const tls = require('tls');
const fs = require('fs');

const options = {
  key: fs.readFileSync('server-key.pem'),
  cert: fs.readFileSync('server-cert.pem'),

  rejectUnauthorized: true,
};

const server = tls.createServer(options, (socket) => {
  console.log('server connected',
              socket.authorized ? 'authorized' : 'unauthorized');
  socket.write('welcome!\n');
  socket.setEncoding('utf8');
  socket.pipe(socket);
});
server.listen(8000, () => {
  console.log('server bound');
});

也许你可以举个例子,因为我完全不清楚。谢谢你的帮助。如果您不清楚我的问题,请告诉我。

标签: javascriptnode.jsssl

解决方案


'use strict';
var tls = require('tls'); 
var fs = require('fs'); 
const PORT = 1337; 
const HOST = '127.0.0.1' 
var options = { 
key: fs.readFileSync('private-key.pem'), 
cert: fs.readFileSync('public-cert.pem') 
}; 
var users= [];
var server = tls.createServer(options, function(socket) { 

users.push(socket)



socket.on('data', function(data) { 
    for(var i = 0; i < users.length; i++){
    if(users[i]!=socket){
        users[i].write("I am the server sending you a message.");       
        }
}

console.log('Received: %s [it is %d bytes long]', 
data.toString().replace(/(\n)/gm,""), 
data.length); }); 


}); 

server.listen(PORT, HOST, function() { 
console.log("I'm listening at %s, on port %s", HOST, PORT); 
}); 

server.on('error', function(error) { 
console.error(error); 

server.destroy(); 
});

推荐阅读