node搭建本地https和wss服务(SSL证书安全)

node 后台 app.js配置

const express = require('express') //加载express资源
const bodyParser=require("body-parser")//一个Express中间件,用于解析HTTP请求体,获得请求的数据const app = express() //返回一个express服务器对象
const https = require('https')
const fs = require('fs')
const path = require('path');
const logger=require("morgan");//日志模块
const favicon=require("serve-favicon") //用于设置和提供 favicons(网页标签图标)。
const WebSocket = require('ws')//导入ajaxRouter这个路由
const route=require("./routes/backmtage/ajaxRouter")
const route1=require("./routes/appoet/ajaxRouter");// 日志模块放在最上方
app.use(logger("dev"))//调用日志,配置为dev(开发)模式// 使用bodyParser应该在路由前
// extended:false:表示使用系统模块query string来处理数据
// extended:true 表示使用第三方模块qs来处理
app.use(bodyParser.urlencoded({extended:false}));
app.use(bodyParser.json());//使用路由,放在静态资源路径前面
app.use(route)
app.use(route1)//设置静态资源路径
//__dirname指向当前文件的根目录
app.use(express.static(__dirname+"/public"))
//设置小图标
app.use(favicon(__dirname+"/public/images/favicon.ico"))//ssl证书
const options = {key:fs.readFileSync(path.join(__dirname,'./ssl/xxxxxx.cn.key')),cert:fs.readFileSync(path.join(__dirname,'./ssl/xxxxxx.cn.pem'))
}//创建https服务器
const httpsServer = https.createServer(options,app,(req,res)=>{res.writeHead(200, { 'Content-Type': 'text/html;charset=utf8' });res.end('This is a https server!\n') 
})httpsServer.listen(8886, () => {// console.log('服务已开启8886');console.log('HTTPS Server is running on: https://xxxx.com:%s', 9999);
})const wss = new WebSocket.Server({server:httpsServer},()=>{console.log('socket start');}
)
//建立连接
wss.on('connection',ws=>{//接收数据ws.on('message',data=>{console.log('received:%s',data);})ws.send('something')
})

服务启动后控制台输出:

 测试:服务器连接

浏览器输入:https:xxxxx:端口 访问成功 

 测试wss   

可以在这个网站websocket/ws/wss在线调试测试工具

发送消息 看服务端 

参考:node搭建本地https和wss服务(SSL证书安全)_node ssl_jixhua的博客-CSDN博客

Node.js网络编程之WebSocket篇_node websocket_夜已如歌_ok的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/14719.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Django_视图中的request对象详解(八)

目录 Request 属性 方法 QueryDict 源码等资料获取方法 Request 当URLconf文件匹配到用户输入的路径后,会调用对应的view函数,并创建一个包含请求元数据的 HttpRequest 对象 传入该函数的第一个参数,常用request表示。 HttpRequest实…

第 353 场LeetCode周赛

A 找出最大的可达成数字 签到题 class Solution { public:int theMaximumAchievableX(int num, int t) {return numt*2;} };B 达到末尾下标所需的最大跳跃次数 动态规划: 定义 p i p_i pi​为跳至 i i i处所需的最大跳跃次数, 有状态转移方程 p i m a x { p j 1 ∣ 0 ≤ j &…

3D 旋转木马

在工作中我们常用到3D装换和3D位移 主要知识点 3D位移:transale3d(x,y,z)3D旋转:rotate3d(x,y,z)透视:perspective3D呈现 transfrom-style 1、 transale3d translform: translform:translateX(100px):仅仅是在x轴上移动translform:transl…

HBuilder:开发者之梦的实现

目录 引言关于HBuilderHBuilder的优点:HBuilder的缺点:HBuilder使用的简单示例总结 Hbuilder 官网 引言 在当今数字化时代,移动应用程序开发已经成为了一个全球热门的领域。伴随着智能手机和移动设备的普及,人们对于移动应用的需求…

python使用代理ip——案例

python爬虫是指使用Python编写的程序,通过网络爬取信息并提取有效数据。它通过模拟浏览器请求,获取网页数据,并通过解析HTML/XML等文档结构,从中提取数据。 Python爬虫常用的库和工具包括: Requests:用于…

UE4/5 GAS技能系统入门

Unreal的GAS技能系统是针对游戏技能管理的一套逻辑封装方案,这套方案考虑面较广,包括了Cooldowns技能冷却、允许多技能同时释放、GameplayTags的使用、特殊的事件触发等,今天就来学习一下。 1.激活插件与C部分配置 1.1 创建测试工程&#x…

【简单认识LVS及LVS-NAT负载均衡群集的搭建】

文章目录 一、LVS群集简介1、群集的含义2、性能扩展方式3、群集的分类4、负载均衡群集架构1、负载均衡的结构 5、三种负载调度工作模式1、NAT模式2、TUN模式3、DR模式 二、LVS虚拟服务器1、Linux Virtual Server简介2、启用LVS虚拟服务3、LVS调度算法(1)…

基于单片机的教室智能照明台灯控制系统的设计与实现

功能介绍 以51单片机作为主控系统;LCD1602液晶显示当前时间、年月日、时分秒、前教室人数;2路红外探头用来感应当前教室进出人数;按键可以设置当前时间、自动手动模式、开启和关闭教室灯光时间;在手动模式下,可以通过按…

【网络】HTTPS协议原理

目录 “加密”相关概念 为什么要加密 常见加密方式 对称加密 非对称加密 HTTPS工作过程探究 方案1-只使用对称加密 方案2-只使用非对称加密 方案3-客户端和服务端双方都使用非对称加密 方案4-非对称加密 对称加密 上述方案问题分析 方案5-证书认证 非对称加密对…

GWIN入门-完整一个程序

GWIN入门-完整一个程序 新建工程 右击工程名,添加.v文件 编写功能文件 /* timescale是Verilog HDL 中的一种时间尺度预编译指令,它用来定义模块的仿真时的时间单位和时间精度。 */`timescale 1ns/1ps module LED(input wire clk

gitlab【安装部署、备份与恢复】

【1】安装依赖 [rootgit ~]# yum -y install install curl opessh-server postfix wget【2】安装软件包 [rootgit ~]# yum -y localinstall gitlab-ce-11.2.3-ce.0.el7.x86_64.rpm 【3】修改配置 [rootgit ~]# grep "^[a-Z]" /etc/gitlab/gitlab.rb external_ur…

JavaWeb学习路线(11)—— Maven延伸

一、分模块设计 (一)概念: 将项目按功能拆分出若干个子模块。 (二)作用: 方便项目管理维护、扩展,也方便模块间相互调用,资源共享。 (三)具体实现 1、抽取…