c# - 如何在一台服务器上使用WebSocket并在同一局域网内的另一台PC上访问它?

标签 c# websocket

当我在C#中使用WebSocket服务器,并在本地PC上访问它时,它工作正常。但是当我尝试用另一台电脑访问时,它不起作用。

我正在使用 Fleck 的 WebSocket 库。

C# WebSocket 服务器中的代码:

_server = new Fleck.WebSocketServer("wss://127.0.0.1:8181");
_server.Certificate = new X509Certificate2(@"C:\test.com.pfx", "123");

HTML/Javascript 代码:

websocket = new WebSocket('wss://192.168.1.37:8181');

当我使用不安全的 WebSocket“ws://127.0.0.1:8181”时,当我尝试访问本地 IP“ws://192.168.1.37:8181”时,Chrome 控制台会发送错误:

The page at 'https://www.websocket.org/echo.html' was loaded over HTTPS, but attempted to connect to the insecure WebSocket endpoint 'ws://192.168.1.37:8181/?encoding=text'. This request has been blocked; this endpoint must be available over WSS.

当我使用安全 WebSocket“wss://127.0.0.1:8181”时 它发送错误:

WebSocket connection to 'wss://192.168.1.37:8181/?encoding=text' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED

仅当我在 WebSocket 客户端中输入“wss://127.0.0.1:8181”时才有效,但我想使用标准 IP,以便其他 PC 访问。

最佳答案

我找到了解决方案,如果有人需要,这里是步骤:

您需要按如下方式启动 Fleck WebSocket 服务器:

_server = new Fleck.WebSocketServer("wss://0.0.0.0:8181");
_server.Certificate = new X509Certificate2(@"C:\test.com.pfx", "123");

然后在想要通过WebSocket客户端访问的PC上,需要先用浏览器访问:

https://192.168.1.37:8181

然后您允许访问。 (它将允许未知用户的认证)

之后你的WebSocket客户端就可以工作了。

关于c# - 如何在一台服务器上使用WebSocket并在同一局域网内的另一台PC上访问它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58503692/

相关文章:

node.js - 在服务器端生成 socket.io 作为 Rest 请求

reactjs - 与 'wss:localhost:60001/w' 的 Websocket 连接失败:连接建立时出错:net::ERR_SSL_PROTOCOL_ERROR

html - 网络套接字协议(protocol)?

c# - 网格寻呼机无法正常工作

C# 从 Microsoft 数据库中获取字符串数组

c# - 如何从 C# 中的嵌套泛型类继承泛型类

c# - 如何统一禁用物理系统

c# - 在 C# 中支持 VB.NET 的导入命名空间功能

javascript - 使用 Socket.io 将客户端连接到服务器

android - 来自 Unity 应用程序的 WebSocket 连接