【问题标题】:Possible to connect to an azure event hub through a browser and websockets?可以通过浏览器和 websocket 连接到 azure 事件中心吗?
【发布时间】:2019-12-27 19:08:50
【问题描述】:

我正在尝试实现基于 Web 的聊天程序,我的计划是使用聊天消息更新 azure cosmos 数据库,然后将事件推送到 azure 事件中心。

缺少的元素是让连接的网络浏览器接收这些事件。

我尝试使用 azure event hubs npm 包 (https://www.npmjs.com/package/@azure/event-hubs),但这看起来像是服务器端。

有没有办法在不启动某种服务器或服务的情况下实现这一点?

【问题讨论】:

  • 事件中心似乎不是一个合乎逻辑的选择。尝试 Azure 信号器
  • @PeterBons,你能提供一个解决方案,以便我们学习吗?谢谢:)

标签: javascript node.js azure websocket azure-eventhub


【解决方案1】:

听起来您想通过带有 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

EventHubs有一个websockets.ts的示例代码,它的package.json需要@azure/event-hubs版本next。我认为您只需要在浏览器中使用WebSocket 而不是示例中的import WebSocket from "ws"; 中的WebSocket,然后您就可以使其在浏览器中运行。

【讨论】:

  • 对此答案的一个小更新 - 您不再需要 next 版本的 @azure/event-hubs 包。自 2020 年 1 月以来的最新版本中提供了这些功能 - 上面提供的示例链接随着代码的移动而损坏。你可以参考github.com/Azure/azure-sdk-for-js/blob/%40azure/…来代替
  • 示例链接已损坏
猜你喜欢
  • 1970-01-01
  • 2011-04-17
  • 1970-01-01
  • 1970-01-01
  • 2021-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-11
相关资源
最近更新 更多