首页 > 编程语言 >node 如何让一个端口同时支持 http 与 https

node 如何让一个端口同时支持 http 与 https

时间:2022-11-01 11:23:20浏览次数:63  
标签:node function http socket res https var

node 如何让一个端口同时支持 http 与 https


/*
 * 让 8080 端口同时支持 http 与 https
 */

var net = require('net');
var http = require('http');
var https = require('https');
var fs = require('fs');

var httpPort = 80;
var httpsPort = 443;
var port = 8080;  

// 内部端口: http 服务
var server = http.createServer(function(req, res){
	res.writeHead(200, {'Content-Type': 'text/plain'});
	res.end('hello world!');
}).listen(httpPort);

// 内部端口: https 服务
var options = {
  key: fs.readFileSync('./cakey.pem'),
  cert: fs.readFileSync('./cacert.pem')
};
var sserver = https.createServer(options, function(req, res){
	res.writeHead(200, {'Content-Type': 'text/plain'});
	res.end('secured hello world');
}).listen(httpsPort);

// 外部端口:总入口代理服务
net.createServer(function(socket){
	socket.once('data', function(buf){
		console.log(buf[0]);
		// https数据流的第一位是十六进制“16”,转换成十进制就是22
		var address = buf[0] === 22 ? httpsPort : httpPort;
		// 创建一个指向https或http服务器的链接
		var proxy = net.createConnection(address, function() {
			proxy.write(buf);
			// 反向代理的过程,tcp接受的数据交给代理链接,
                        // 代理链接服务器端返回数据交由socket返回给客户端
			socket.pipe(proxy).pipe(socket);
		});
		
		
		proxy.on('error', function(err) {
			console.log(err);
		});
	});
	
	socket.on('error', function(err) {
		console.log(err);
	});
}).listen(port);



Ref

标签:node,function,http,socket,res,https,var
From: https://www.cnblogs.com/eddyz/p/16847069.html

相关文章

  • node.js - http、模块化、npm
    今天是node学习的第二天,其实越往后面学越感觉有点熟悉的味道了,光针对于node来说哈,为什么呢,因为我之前学过一点云计算的东西,当时感觉没什么用搞了下服务器客户端这些,没想到这......
  • java操作http请求的三种方式
    java操作http请求的三种方式一、HttpClient步骤:1.获取一个Http客户端CloseableHttpClienthttpClient=HttpClients.createDefault();2.创建一个请求HttpGethttpGet......
  • vue 快速删除node_modules
      因为平时装依赖的时候,有可能会报错怎么不管用的时候,就需要把node_modules文件夹删了重新intall一下,但是直接删的话会要管理员权限,或者各种问题,这个时候就可以使用一个......
  • node 学习笔记
    1.通过node执行js1.复制文件所在路径2.node+路径2.node读写文件1.引入file模块读取文件2.fs.readFile(‘./read/hell.txt’,function(error,data){if(error){con......
  • RPC调用与HTTP调用
    1、RPC服务 从三个角度来介绍RPC服务:分别是RPC架构,同步异步调用以及流行的RPC框架。 1.1、RPC架构 一个完整的RPC架构里面包含了四个核心的组件,分别是Client,Se......
  • 有用的内置Node.js APIs
    前言在构建你的第一个Node.js应用程序时,了解node开箱即用的实用工具和API是很有帮助的,可以帮助解决常见的用例和开发需求。有用的Node.jsAPIsProcess:检索有关环境变量......
  • HTTP协议学习(补充)
    1.HTTP长连接每次http请求需要创建tcp连接,需要三次握手chrome一次支持6个并发连接创建长连接可以在请求头里面加上Connection:Keep-Alive一个TCP连接可以发送多个HTTP......
  • 基于nodejs的预约上门维修服务系统设计与实现-计算机毕业设计源码+LW文档
    开发语言:nodejs框架:Express数据库:mysql5.7(一定要5.7版本)数据库工具:Navicat11开发软件:VScode/HBuilderX浏览器:谷歌浏览器数据库脚本:DROPTABLEIFEXISTS​​config......
  • 基于nodejs电影交流网站设计与实现-计算机毕业设计源码+LW文档
    摘 要网络的广泛应用给生活带来了十分的便利。所以把电影交流管理与现在网络相结合,利用nodejs技术建设电影交流网站,实现电影交流的信息化。则对于进一步提高电影交流管理......
  • 基于nodejs的面向图书共享设计与实现-计算机毕业设计源码+LW文档
    开发语言:nodejs框架:Express数据库:mysql5.7(一定要5.7版本)数据库工具:Navicat11开发软件:VScode/HBuilderX浏览器:谷歌浏览器数据库:DROPTABLEIFEXISTS​​config​​......