问题标签 [azure-web-pubsub]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
azure-web-pubsub - Azure JSON 子协议“json.webpubsub.azure.v1”以编程方式加入组获取响应
json.webpubsub.azure.v1
如果在使用子协议加入带有样本的组时成功加入该组,我正在尝试以编程方式获取。
下面是我的示例 JSON,它不会获取结果成功响应或错误响应:基本上,我试图确定加入组是否成功使用json.webpubsub.azure.v1
子协议。
样品要求:
azure - 我们可以从 Azure Web PubSub 获取对话历史记录吗
我正在使用 Can we get conversation history from Azure Web PubSub 开发一个聊天窗口。有没有办法我可以得到对话历史。
javascript - 将 WebSockets 从浏览器连接到其他应用程序
介绍
我的申请分为 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 特定答案会更好。
c# - Azure Web PubSub 和事件网格/事件中心之间有什么区别?
在我看来,Azure Web PubSub 是使用 Web 套接字而不是 HTTP 的事件网格和事件中心的组合。但是,我不能 100% 确定,也找不到任何可以直接比较这 3 种服务的文章。
azure-web-pubsub - 何时在 azure web pub sub 中创建不同的集线器与组
我对正确的方法或在创建单独的集线器与在集线器内创建单独的组时要考虑的决定因素有些困惑。
在我的应用中,有 2 种情况正在使用 pub sub:
- 多个用户可以访问相同的数据。为了避免一个用户覆盖另一个用户所做的更改,我们使用锁定机制,以便只有一个用户可以在我的给定点编辑数据。如果用户正在查看的数据被锁定,Pub sub 会通知用户。
- 我们有一些长期运行的报告生成过程,我们使用 pub sub 来获取长期运行过程的状态更新
我们目前为整个应用程序创建了单个集线器(“MY-APP-HUB”),并且为这两个用例创建了单独的组“LOCK-DATA-[IDENTIFIER OF THE DATA]-GROUP”和“REPORT-[报告的标识符]-组”。运行良好,没有问题。
但是我想知道是否应该为每个操作创建单独的 HUB,例如“LOCK-DATA-HUB”和“REPORT-HUB”,然后为每个数据单元创建单独的组。因此,例如在“LOCK-DATA-HUB”中,为“REPORT”创建一个组“DATA-1-GRP”、“DATA-2-GRP”,类似地“REPORT-1-GRP”、“REPORT-2-GRP” -中心”。
老实说,我不确定我做事是否正确。一方面,让与应用程序关联的所有消息都通过集线器对我来说很有意义,并且只管理单个令牌更简单。
但是为每个操作/功能创建中心也不错。我在这里唯一担心的是,如果多个应用程序共享相同的 pub sub 有类似的操作,但可以通过在我想的集线器名称中添加一些应用程序标识符来避免这种情况。
json - Azure PubSub / JSON 子协议 / 反序列化 JSON 有效负载
所以 JSON 将会出现一段时间,我将不得不学习它是如何工作的......
在 Azure pubsub 中,我发送如下消息:
当我在另一边得到它时(从 ResponseMessage.TEXT 中读取),我得到了这个:
webPubSubServiceClient 已经包装了我在这个结构中创建的 JSON:
问题在于我正在发送各种 JSON 有效负载,并且包装器没有信封字段告诉我如何反序列化“数据”中的内容 - 因为在该类中我有一个带有属性的基类填写我正在使用的 typeName。
所以当我这样做时:
反序列化对数据元素有爆炸的变化,因为数据元素可以是我序列化的任何类。
那么如何使用 C# 中的类读取数据?我是否将其读取为 JSONElement/JSONDocument 并解析我的方式?如果是这样,我希望有一些最佳实践的例子。
我认为我的另一个选择是简单地将要发送的消息定义为“TEXT”,然后反序列化为基类,获取我需要的段,反序列化该片段?
我在这里遗漏了一些东西,因为 JSON 协议应该在这里帮助我,而不是妨碍我……或者我只是认为类型太强了?
我正在使用 NET6,所以我希望我们有一些我不知道的新功能。正如我所说,我正在寻找使用这项新服务的最佳实践。
提前致谢。
azure - 由于连接,Azure APIM 为 WebSocket API 引发错误:保持活动,升级
我在 Azure API 管理服务门户上有 REST 和 WebSocket API。WebSocket 正在根据来自不同开发环境的客户端/前端的输入参数重定向到不同的 Web Pubsub 服务。
从谷歌浏览器点击 WebSocket api 时,我能够成功地建立端到端连接。从 Firefox 访问相同的 WebSocket api 时,我InvalidWebsocketUpgrade
从 APIM 服务中收到错误消息。
发生这种情况是因为 ChromeConnection: Upgrade
在套接字连接请求标头中发送,而 FirefoxConnection: Keep-Alive, Upgrade
在标头中发送。
铬请求:
火狐请求:
我需要在 APIM 或其他任何地方配置任何东西来支持这个吗?
azure - 为什么我的天蓝色 PubSub 订阅者无法从我的发布者那里收到
我正在寻求在 Azure PubSub 中使用组,但似乎我的发布者和订阅者没有以某种方式加入同一个组,或者我的无服务器函数在消息发布后没有处理广播。如果我在未实施组的情况下发布该服务,但一旦我尝试添加组,我可以看到消息在 azure 上命中实时跟踪工具,但之后没有消息发送,所以我怀疑我的 azure 函数中可能遗漏了一些东西,但我不确定那会是什么。
发布者代码:
订阅者代码: