0

介绍

我的申请分为 3 个部分:

  • 收集和分发数据的 C# .Net 5.0 桌面应用程序
  • Angular 10 静态应用程序,用于控制 C# 应用程序(启动/停止)并以图表的形式为用户打印数据
  • Azure Function Rest API 用作 Angular 静态应用程序 (.NET core 3.1) 的后端

我的目标是让 WebSocket 用于 C# 和 Angular 应用程序之间的“实时”通信,而不是依赖对 Azure Function REST api 的 Http 请求我不使用 express.js 之类的“经典”服务器。Azure Function 完全取代了它。

因此,我使用服务Azure WebPubSub来托管套接字。

问题:我无法连接从 Angular(浏览器应用程序)创建的 websocket。

问题不是来自 WebPubSub,因为 WebSockets 在我的 C# 应用程序、Azure Functions 甚至一些 node.js 测试脚本之间完全正常工作(发送和接收)。此外,我在浏览器应用程序中创建的网络套接字可以与自身通信,但没有其他应用程序从浏览器应用程序中的网络套接字发送消息。

问题:我可以使用我当前的架构从浏览器与其他应用程序实时通信(基于 websocket)吗?如果可以,如何?

Azure WebPubSub 文档页面上,没有我尝试实现的示例。在互联网上搜索同样的事情。

使用链接到应用程序的 Express.js 服务器的解决方案,可以用作浏览器应用程序和 c# 应用程序之间的中间人。但如果可能的话,我想避免它。我只是想知道我正在尝试做的事情是否可行。

此外,该应用程序可以在 React.js 中重新完成,因此非 Angular 特定答案会更好。

4

1 回答 1

0

Web PubSub 日志流示例:https ://docs.microsoft.com/azure/azure-web-pubsub/tutorial-subprotocol?tabs=javascript听起来像一个类似的场景。

您的 AngualrJS Web App 类似于 logstream 的 Web 应用程序,它加入了该stream组。

您的 C# .Net 5.0 桌面应用程序类似于日志流的消息发布者应用程序streamhttps://docs.microsoft.com/azure/azure-web-pubsub/tutorial-subprotocol?tabs=csharp#publish-messages-from-client,向stream组发送消息。

在此处输入图像描述

于 2021-10-14T06:49:27.320 回答