代码拉取完成,页面将自动刷新
websocket服务端如果不加ssl通过ws://127.0.0.1:8800访问 演示客户端和html5(js)页面都可以正常连接和收发数据。
如果换成wss://127.0.0.1:8800,演示客户端可以正常连接和收发数据,但是html5(js)页面无法连接。
请问这是什么原因,需要如何解决
if (wss)
{
// wss请开启此设置, 设置ssl配置, 会自动初始化ssl环境
server.SslConfiguration = new SslConfiguration
{
// 不从内存加载证书
FromMemory = false,
// ssl证书配置, 支持单向验证
VerifyMode = SslVerifyMode.Peer,
CaPemCertFileOrPath = "ssl-cert\\ca.crt",
PemCertFile = "ssl-cert\\server.cer",
PemKeyFile = "ssl-cert\\server.key",
KeyPassword = "123456",
};
}
// 注册ws服务器, 未对path注册服务则无法访问
// 要注册的服务必须继承自HPSocket.WebSocket.IHub接口
// 注册欢迎服务, 客户端通过ws[s]://127.0.0.1:8800连接
server.AddHub<WelcomeHub>("/");
// 注册回显服务, 客户端通过ws[s]://127.0.0.1:8800/echo连接
server.AddHub<EchoHub>("/echo");
// 启动服务
server.Start();
await server.WaitAsync();这里输入代码
换一下VerifyMode = SslVerifyMode.Peer,
这句,参考下面连接
https://blog.csdn.net/u013919153/article/details/78616737
如果还不行, 就前置nginx, 反向代理到后端ws端口, 证书挂在nginx上, 具体请百度
如果是wss你应该使用域名的证书,而不是这种自建证书, 浏览器有处理, 你极有可能是怎么测试都过不去的, 举个例子
www.abc.com 的 wss 你就得用 www.abc.com的证书, 然后 浏览器也要访问www.abc.com 才能连接到wss, 这就是我上面为什么说让你用nginx做反向代理的原因, 如果两端都是exe程序, 不经过浏览器, 是没有这个问题的.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
登录 后才可以发表评论