如何排查和调试 Azure Web PubSub 事件处理程序
当 WebSocket 连接建立与 Web PubSub 服务的连接时,该服务会向已注册的上游创建 HTTP POST 请求,并要求获得 HTTP 响应。 我们将上游称为“事件处理程序”,它负责按照 Web PubSub CloudEvents 规范处理传入事件。
在本地运行事件处理程序终结点
当事件处理程序在本地运行时,无法公开访问本地服务器。
有两种方法可以将流量路由到 localhost,一种方法是使用 ngrok、localtunnel 或 TunnelRelay 等工具公开 localhost,从而使其可在 Internet 上访问。 另一种方法(也是推荐的方法)是使用 awps-tunnel 通过工具将流量从 Web PubSub 服务隧道传输到本地服务器。
Web PubSub 本地隧道工具在后台与 Web PubSub 服务建立多个持久隧道连接(我们认为它是一种类型的服务器连接)。 每当发生某个事件时,Web PubSub 服务就会通过隧道连接将事件消息路由到本地隧道工具,而本地隧道工具会转换 HTTP 请求并将该请求发送到上游服务器。
本地隧道工具通过 Web 视图页面生动展示工作流。 默认情况下,Web 视图侦听本地端口 upstream port + 1000
,而你可以使用命令参数 --webviewPort <your-custom-port>
自定义 Web 视图端口。
Web 视图包含四个选项卡:
- “客户端”选项卡 - 提供测试 WebSocket 客户端来连接 Web PubSub 并发送数据。
- “Web PubSub”选项卡 - 提供有关 Web PubSub 服务的基本信息,并嵌入“实时跟踪”页面(如果已启用)。
- “本地隧道”选项卡 - 列出了通过本地隧道工具传送到本地服务器的所有请求。
- “服务器”选项卡 - 显示有关本地服务器的基本信息。 它还使用与下面所示的示例代码类似的代码提供了一个内置回显服务器。
按照使用本地隧道工具进行开发中的说明操作,在本地安装和运行隧道工具,以在本地开发事件处理程序服务器。
联机调试事件处理程序终结点
有时,向上游配置的事件处理程序发送事件时可能会遇到问题。 一种典型的错误类型与滥用保护失败有关,例如 AbuseProtectionResponseInvalidStatusCode
、AbuseProtectionResponseMissingAllowedOrigin
或 AbuseProtectionResponseFailed
。 此类错误可能与上游应用服务器设置相关,例如,403 状态代码可能与应用服务器身份验证配置相关,404 状态代码可能是由不一致的事件处理程序路径配置引起的。 排查此类失败的一种方法是将滥用保护请求发送到配置的事件处理程序 URL,以查看其是否正常工作,例如,使用 curl
命令将滥用保护请求发送到配置的事件处理程序 URL https://abc.web.com/eventhandler
,如下所示:
curl https://abc.web.com/eventhandler -X OPTIONS -H "WebHook-Request-Origin: *" -H "ce-awpsversion: 1.0" --ssl-no-revoke -i
该命令将返回 204。
后续步骤
使用这些资源开始生成自己的应用程序: