Azure事件网格使用来自带有节点的混合连接的事件

时间:2019-07-31 18:26:26

标签: node.js azure-eventgrid

有人可以指出我正确的方向吗?我正在与一位希望让第三方从他们那里接收事件数据(创建blob等)的客户一起工作。 C#示例效果很好:

https://azure.microsoft.com/en-us/resources/samples/event-grid-dotnet-publish-consume-events/

但是,他们的某些客户端正在使用Node,而我们在连接它们时遇到了麻烦。当有发送者/侦听器时,这些示例效果很好,但是侦听器有效地吞噬了事件网格事件,因为它们是通过“请求”键发送的,而发送者/侦听器事件是通过“接受”键发送的。

https://github.com/Azure/azure-relay/tree/master/samples/hybrid-connections/node

我可以直接指向每个Node示例(HybridConnectionWebSocktServer.js等)中处理事件的行,然后将其忽略。

我也找到并尝试了此函数示例,但尚未成功在本地接收事件网格事件:

https://azure.microsoft.com/is-is/resources/samples/event-grid-node-publish-consume-events/

有没有更好的例子?有没有更好的方法?我们应该从另一个方向来解决这个问题吗?

在正确的方向上提供任何帮助,指导或微调,将不胜感激。

1 个答案:

答案 0 :(得分:2)

我联系了所有可用途径,以尝试快速解决我的问题。我想在这里发布答案,以防其他人遇到与我同样的麻烦。

非常感谢Microsoft的人员,他们能够为我指出正确的方向并帮助我解决问题。

  

事件网格仅基于HTTP构建,因此使用请求手势获取事件就很有意义。如果尚未找到,则用于Hybrid Connections的交互模型的文档为available here

     

您要查看的示例使用hyco-ws软件包,该软件包仅适用于websocket。您要使用的软件包是hyco-https,它允许侦听HTTP消息。此示例显示了如何使用Hybrid Connections with HTTP

我也尝试过此示例,但没有看到(或不知道如何访问)事件数据。

再挖掘一点,我就能通过添加req.on行找到一种数据处理方法:

        (req, res) => {
        console.log('request accepted: ' + req.method + ' on ' + req.url);

        req.on('data', function(chunk) {
            var bodydata = chunk.toString('utf8');
            console.log(bodydata);
        });

        res.setHeader('Content-Type', 'text/html');
        res.end('<html><head><title>Hey!</title></head><body>Relayed Node.js Server!</body></html>');
    });

这写了我希望在控制台看到的事件。