c# 怎么连接wss

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# 怎么连接wss相关的知识,希望对你有一定的参考价值。

wss连接是wss://127.0.0.1/websocket/?EC=3&AT=websocket
没有什么密匙的
网上例子都是 ip端口的那种连接不上

    首先你可以用ws测试本地服务器 是否能正常访问  如果是IIS需要配置一些东西

    其次wss 需要配置证书 你需要域名(已备案) 443端口 及客户端访问时需要配置证书和密钥

    有公开源码的C#wss服务器代码 你可以下载几个试试 有简答的也有官方提供的signalR

    signalR 默认用的就是ws  如果用wss配置有点小麻烦 可以试试

参考技术A 这个是 web socket

C# WebSocketServer wss:// 连接失败

【中文标题】C# WebSocketServer wss:// 连接失败【英文标题】:C# WebSocketServer wss:// connection fail 【发布时间】:2014-02-24 13:53:45 【问题描述】:

我编写了一个 WebSocket 服务器,它目前仅适用于 ws:// 连接。 使用 http://www.websocket.org/echo.html(在 Chrome 上)和 http://websocket4net.codeplex.com/ 测试。

现在我还想支持wss:// 连接 (TLS)。 我已经让它与 WebSocket4Net 一起使用,但是在使用回声测试时, 在 C# 代码中执行SslStream.AuthenticateAsServer(); 后,javascript 立即抛出异常。

它进行 TLS 协商,但 Chrome 拒绝连接。 SslStream 读写(ServerSide 由 AuthenticateAsServer 完成):

Read(5, 0, 5) == 5
Read(517, 5, 512) == 512
Write(887, 0, 887)
Read(887, 0, 5) == 5
Read(887, 5, 262) == 262
Read(5, 0, 5) == 5
Read(6, 5, 1) == 1
Read(5, 0, 5) == 5
Read(53, 5, 48) == 48
Write(59, 0, 59)

我使用以下步骤添加证书:

makecert -sv CA.pvk -r -n "CN=Dev" -a sha256 -len 2048 -sky signature -cy authority CA.cer
makecert -ic CA.cer -iv CA.pvk -n "CN=localhost, CN=127.0.0.1" -a sha256 -len 2048 -sky exchange -sv CA_localhost.pvk -pe CA_localhost.cer
cert2spc CA_localhost.cer CA_localhost.spc
pvkimprt -pfx CA_localhost.spc CA_localhost.pvk //Select export
//Import CA.cer into your Computer store's Trusted Root Certification Authorities (certmgr.msc)
//Import the private key that the server is going to use into the server machine's Personal store.
//This is achieved by importing the .pfx file that you generated earlier.

new SslStream(new NetworkStream(clientSocket), true)创建的SslStream 对于 AuthenticateAsServer,我使用的是“CA_localhost.cer”证书。

确保证书显示在 certmgr.msc 中后,我打开了 在 Chrome 中使用 http://www.websocket.org/echo.html 并使用 wss://localhost:12345 作为地址(我的服务器正在侦听)并选中复选框。 点击Connect后我只得到:

 ERROR: undefined
 DISCONNECTED

javascript 控制台显示: WebSocket 连接到“wss://127.0.0.1:12345/?encoding=text”失败:在收到握手响应之前连接已关闭

AuthenticateAsServer 之后的服务器端,属性IsAuthenticatedIsEncrypted 设置为true,但之后我立即收到零长度的数据,关闭连接。

我假设我在证书创建和/或安装过程中出错了,但我不知道我做错了什么。 有什么想法吗?

【问题讨论】:

【参考方案1】:

经过几个小时的测试和放弃,我又试了一次: 事实证明(或者至少对我来说看起来像这样)只有最后一个通用名称被用于验证 ws-uri。

使用 wss://127.0.0.1:12345 有效。

【讨论】:

以上是关于c# 怎么连接wss的主要内容,如果未能解决你的问题,请参考以下文章

https 的 WSS 连接失败

如何使浏览器信任本地网络 wss:// 连接?

在 SSL WebSocket 连接 (wss) 中拦截请求

测试wss是否连接企业微信成功

Firefox 无法建立到 WSS 的连接

配置Websocket wss连接