我正在尝试实现一个基于 Web 的聊天程序,我的计划是使用聊天消息更新 azure cosmos 数据库,然后将事件推送到 azure 事件中心。
缺少的元素用于连接的网络浏览器接收这些事件。
我尝试使用 azure 事件中心 npm 包 ( https://www.npmjs.com/package/@azure/event-hubs ),但这看起来像是服务器端的。
有没有一种方法可以实现这一点,而无需启动某种服务器或服务?
最佳答案
听起来你想通过带有websocket的浏览器直接连接EventHub,据我所知,实现它的唯一方法是使用AMQP over WebSocket来连接EventHub。
有一个MSDN博客介绍了这个主题Connect to Azure Event Hub in browser ( using AMQP over WebSockets )
,以及同一作者的另一个博客介绍How to use AMQP protocol in Browser (JavaScript)
。您可以从其 GitHub 存储库 https://github.com/amqp/rhea/tree/master/dist
获取 rhea.js
。
同时,根据@azure/event-hubs
的源码信息,浏览器似乎支持AMQP over WebSocket的特性,如下图来自源码https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/eventhub/event-hubs/src/impl/eventHubClient.ts#L259 .
并且有一个示例代码websockets.ts
对于 EventHubs,它需要 package.json
中的 @azure/event-hubs
版本 next
。我想你只需要使用 WebSocket
在浏览器中而不是示例中的 import WebSocket from "ws";
中的 WebSocket
,那么您就可以使其在浏览器中工作。
关于javascript - 可以通过浏览器和 websockets 连接到 azure 事件中心吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59488578/