背景
前端js需要连接后端wss服务

前端:js
后端:c# - 控制台搭建wss服务器

步骤1

wss需要ssl认证,所以需要个证书,随便找一台linux的服务器(windows的话,自己安装下openssl即可),一般都有安装openssl的工具,利用它来生成一份证书

1、最好是cd到一个自定义目录下操作,后面生成的3个文件都在这里的

生成.key文件,要求输入一个自定义的密码,输入2遍,至少4位,假设这里我们输入的是:123456,因为后面移除key文件的密码时需要
openssl genrsa -des3 -out server.key 2048

2、生成.crt文件,默认给他10年有效期,随便霍霍造,会提示输入密码,也就是上面key的密码,123456,后面按需要会提示输入一些信息,自己酌情即可,想省略的话输入.即可
openssl req -new -x509 -key server.key -out server.crt -days 3650

...
Common Name (eg, your name or your server's hostname) []:xl
这一项最好是写点东西,安装的时候会提示证书颁发给和颁发者,后续如果在windows里面导的话,更容易找到,当然,不写也没有关系的
...

3、生成.pfx文件(上面2个主要是前端nginx配置需要,pfx这个主要是给c#用的,用来加载到程序里,它相当于是key和crt的集合体)
openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt

会提示输入密码之类的,
Enter pass phrase for server.key: 这个是上面key的密码,也就是123456
Enter Export Password: 这个是区别key的,打开pfx的密码,为了放置错乱,最好也设置成123456
Verifying - Enter Export Password: 确认输入一次pfx的密码

完事后,目录下就生成3个文件了应该

4、取消掉key文件的密码限制,不然nginx每次启动都会要求输入密码的
openssl rsa -in server.key -out server.key

会提示输入密码,输入即可,123456嘛,完了后面都不用输入密码了,我在想是不是可以key生成了就把密码给他移除掉,后面就不用再输入那么多次密码了,可以试试后面...

步骤2
nginx配置ssl
  打开nginx配置文件如下:
server {
listen 443 ssl; # 端口看你心情,端口后面 ssl必须要加上
server_name localhost;

ssl_certificate F:\SourceCode\XL\VUE\dccsplayer\dist\ssl\server.crt; #指定一下你的证书路径
ssl_certificate_key F:\SourceCode\XL\VUE\dccsplayer\dist\ssl\server.key; #指定一下你的key路径

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X_FORWARDED_PROTO https;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_redirect off;


proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";



location / {
root F:\SourceCode\XL\VUE\dccsplayer\dist; #这个是我的工程导出的目录,替换成你的
index index.html index.htm;
# 配置让Vue Router处理路由
#try_files $uri $uri/ /index.html;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
保存后,重启一下nginx,测试下网站能不能访问了

步骤3

c#代码构建wss服务,Nuget,搜索安装:Fleck

 1 using Fleck;
2 using Microsoft.VisualBasic;
3 using System.Diagnostics;
4 using System.Reflection;
5 using System.Security.Cryptography.X509Certificates;
6
7 Console.WriteLine("Hello, World!");
8
9 string exePath = System.IO.Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName);
10
11 var location = "wss://0.0.0.0:8972";
12 WebSocketServer server = new WebSocketServer(location);
13
14 // ssl配置
15 server.Certificate = new X509Certificate2(Path.Combine(exePath, "xl", "server.pfx"), "123456"); //配置pfx证书的目录,且配置打开密码
16 server.EnabledSslProtocols = System.Security.Authentication.SslProtocols.Tls12;
17
18 //出错后进行重启
19 server.RestartAfterListenError = true;
20 //开始监听
21 server.Start(socket =>
22 {
23 socket.OnOpen = () => //连接建立事件
24 {
25 Console.WriteLine($"有新的连接");
26 };
27 socket.OnClose = () => //连接关闭事件
28 {
29 Console.WriteLine($"有连接被关闭");
30 };
31 socket.OnMessage = message => //接受客户端网页消息事件
32 {
33 Console.WriteLine($"接受客户端网页消息事件 -> {message}");
34 };
35 socket.OnError = exp =>
36 {
37 Console.WriteLine($"有连接被意外中断");
38 };
39 });
40 Console.WriteLine("任意键停止...");
41 Console.ReadLine();
42 server.Dispose();

前端js

const ws = new WebSocket('wss://10.6.30.127:8972')
ws.onopen = () => {
console.log('握手成功')
if (ws.readyState == 1) {
console.log('连接成功') setInterval(() => {
ws.send(`测试发送:${new Date()}`)
}, 1000)
}
}
ws.onmessage = (msg) => {
console.log('msg', msg)
}
ws.onerror = (err) => {
console.info(err)
}

整体效果图:

连接的时候有个警告,不知道为啥还,有知道朋友可以告知下,但是不影响使用

前端js需要连接后端c#的wss服务的更多相关文章

  1. RSA加密前端JS加密,后端asp.net解密,报异常

    RSA加密前端JS加密,后端asp.net解密,报异常 参考引用:http://www.ohdave.com/rsa/的JS加密库 前端JS加密代码: function GetChangeStr() ...

  2. 前端JS AES加密 后端PHP AES加解密

    <!DOCTYPEhtml> <html> <head> <title>aes demo</title> </head> < ...

  3. RSA前端JS加密,后端JAVA解密实现

    用RSA非对称加密方式实现.后台生成rsa密钥对,然后在页面设置rsa公钥,提交时用公钥加密密码,生成的密文传到后台,后台再用私钥解密,获取密码明文.这样客户端只需要知道rsa加密方式和公钥,前台不知 ...

  4. Updatepanel 后端返回后,在 Updatepanel 内控件的前端 js 失效问题

    实际情况:点击下箭头弹出列表,点击列表上的隐藏按钮隐藏列表. 背景:模块没有使用Js或者Jquery的Ajax功能,而是使用Asp.Net的Ajax控件--UpdatePanel + ScriptMa ...

  5. 前端js上传文件 到后端接收文件

    下面是前端js代码: <html> <head> <meta http-equiv="Content-Type" content="text ...

  6. 转发:RSA实现JS前端加密,PHP后端解密

    web前端,用户注册与登录,不能直接以明文形式提交用户密码,容易被截获,这时就引入RSA. 前端加密 需引入4个JS扩展文件,jsbn.js.prng4.js.rng.js和rsa.js. <h ...

  7. RSA实现JS前端加密,PHP后端解密

    web前端,用户注册与登录,不能直接以明文形式提交用户密码,容易被截获,这时就引入RSA. 前端加密 需引入4个JS扩展文件,jsbn.js.prng4.js.rng.js和rsa.js. <h ...

  8. js前端加密,php后端解密(crypto-js,openssl_decrypt)

    来源:https://blog.csdn.net/morninghapppy/article/details/79044026 案例:https://blog.csdn.net/zhihua_w/ar ...

  9. json处理总结(前端js和后端java)

    前端(js): json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键,下面将介绍两者之间的相互转换. json字符串:var st ...

  10. 前端Js框架汇总

    概述: 有些日子没有正襟危坐写博客了,互联网飞速发展的时代,技术更新迭代的速度也在加快.看着Java.Js.Swift在各领域心花路放,也是煞是羡慕.寻了寻.net的消息,也是振奋人心,.net co ...

随机推荐

  1. Lua字节数组与float互转

    纪念那些在双流工厂奋斗的日夜,防爆表屏项目 是一次很成功的实践,包括设计的页面堆栈和跳转机制 历史回退机制 页面密码保护机制  串口分包机制 ,运用综合所学来搭建的屏上独立内循环系统 ,自恋点说的话各 ...

  2. 从理念到实践,解构HBlock降本增效黑科技!

    "新存储  更轻量" 天翼云存储资源盘活系统HBlock 2024年线上技术分享会来啦! 在2023年HBlock分享会之后 不少小伙伴积极参与了1PB免费尝鲜活动 好评如潮的同时 ...

  3. 一键部署Palworld幻兽帕鲁服务器最佳实践

    本文基于天翼云通用型云主机,为您介绍通过镜像一键部署Palworld幻兽帕鲁服务器的具体操作. Ubuntu系统 1.按需购买云主机.通过Palworld专属活动优惠页一键购买开通云主机. 根据需要选 ...

  4. Flink流式数据缓冲后批量写入Clickhouse

    一.背景 对于clickhouse有过使用经验的开发者应该知道,ck的写入,最优应该是批量的写入.但是对于流式场景来说,每批写入的数据量都是不可控制的,如kafka,每批拉取的消息数量是不定的,fli ...

  5. C#实现文件的压缩和解压缩

    原文链接:https://www.cnblogs.com/sunyaling/archive/2009/04/13/1434602.html 在C#中实现文件的压缩和解压缩,需要使用第三方的组建完成. ...

  6. nginx失效 nginx不起作用

    nginx失效的原因 今天大晚上的,服务器更新了,重启了,然后我重新开一下后端,nginx. 奇了个怪,一直给我报404,而且不是nginx给我报的啊,就是普通的404,完全404了. 我看nginx ...

  7. Chatbox接入硅基流动deepseek R1模型API

    Chatbox接入硅基流动deepseek R1模型API 注册硅基流动,填入邀请码会获得14元的免费额度 硅基流动最新邀请码:9MqV8tO4 注册硅基流动后 新建一个秘钥 回到模型广场,选择dee ...

  8. 【COM3D2Mod 制作教程(6)】实战!制作身体部分(下)

    [COM3D2Mod 制作教程(6)]实战!制作身体部分(下) 有了上一章制作帽子的经验,此时做头发很多就不必再重复赘述了,但如果用完全一样的流程和方法,把头发做好后直接装扮就会导致游戏报错,这就是我 ...

  9. Normalizing flow 流模型 | CS236深度生成模型Lec8学习笔记

    主要参考资料:Stanford University CS236: Deep Generative Models Lec8. 这篇blog基本上是CS236 Lec8的刷课总结/刷课笔记. VAE 这 ...

  10. 『玩转Streamlit』--缓存机制

    Streamlit 应用在运行时,每次用户交互都会触发整个脚本的重新执行. 这意味着一些耗时操作,如数据加载.复杂计算和模型训练等,可能会被重复执行,严重影响应用响应速度. 本文介绍的缓存机制能够帮助 ...