如何在Azure Blazor Web应用中使用Websocket-sharp

yh2wf1be  于 2023-10-20  发布在  其他
关注(0)|答案(1)|浏览(157)

我完全被困在这一个,运行的东西尝试。
Visual Studio 2022.使用项目模板创建演示Blazor应用程序。在本地和发布到Azure时都可以正常运行。
我使用http://sta.github.io/websocket-sharp/添加WebSocket服务器和客户端。
我在当地都做得很好。
在我的一个剃须刀服务.cs文件中,我有:

m_WSServer = new WebSocketServer(3333, false);
m_WSServer.AddWebSocketService<Laputa>("/" + "Laputa");

在我的一个客户端.razor文件中,我有:

m_WSClient = new WebSocket("ws://11.22.33.44:3333/Laputa");

就像我说的,在当地一切都很好。
显然,它在发布到Azure时不会按原样运行。我在出版前做了两个修改:
在服务中,我现在有:

m_WSServer = new WebSocketServer(3333, true);
m_WSServer.AddWebSocketService<Laputa>("/" + "Laputa");

(true使用ssl的参数,因为Azure必须使用ssl)
在client .razor文件中,我有:

m_WSClient = new WebSocket("wss://mywebappname.azurewebsites.net:3333/Laputa");

所以用wss代替了ws。
从我所看到的,WebSocket服务器正在运行,但当我调用WebSocket客户端的connect方法时,它很快就从WebSocket服务器接收到一个onClose事件。
有人能看出我的错误吗?我唯一能想到的是我的WebSocket客户端连接的URL可能是错误的?例如“wss:mywebappname.azurewebsites.net:3333/Laputa“,但我已经尝试了许多变化。
(我应该补充一下,我已经在我的Azure应用程序上启用了websockets)。
谢谢.

k4ymrczo

k4ymrczo1#

我尝试了你分享的相同的示例代码,我可以在本地运行它。

  • 当您为Azure托管的应用程序使用标准WebSocket安全(wss)端口(端口443)时,不应在URL中包含端口号(例如:3333)。
m_WSClient = new WebSocket("wss://mywebappname.azurewebsites.net/Laputa");

这里我使用自定义域,所以我进口证书.通过在创建WebSocketServer时将第二个参数设置为true,您将启用SSL,它允许您使用wss://协议进行安全的WebSocket通信。这是安全WebSocket连接的正确方法。

  • 在webapp中启用了web sockets选项“on”。

由于自定义页面,请使用高级计划配置您的Web应用程序。

相关问题