【问题标题】:TLS to multiple clients and different messagesTLS 到多个客户端和不同的消息
【发布时间】:2018-10-25 05:58:19
【问题描述】:

我正在规划一个基于 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');
});

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

【问题讨论】:

  • 你有两个问题,它们完全不相关:1)如何使用 TLS 在客户端和服务器之间进行通信 2)如何让服务器处理多个客户端并在它们之间广播消息.两者都是相当通用的主题,已经有很多资源,所以没有你提出任何更具体的问题,详细信息,没有太多要说的。
  • Nikihil Unni 的回答帮助我了解了如何处理多个客户。我对其进行了测试,并且成功运行。感谢您的评论。

标签: javascript node.js ssl


【解决方案1】:
'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(); 
});

【讨论】:

  • 问题是,我不希望客户端上有任何证书。而且我不知道如何向所有客户端发送消息,除了发送消息的客户端。
  • 你可以参考这段代码。在这里,我保留了每个连接的记录。每个连接都存储在一个数组中。所以我可以很容易地找到每条消息的发件人。在应用层面,我们可以使用对象来保存每个连接的记录
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-05
  • 2014-09-02
  • 2019-04-08
  • 1970-01-01
  • 1970-01-01
  • 2012-11-02
  • 1970-01-01
相关资源
最近更新 更多