symfony - Mercure & Event Source Polyfill:错误:45000 毫秒内没有活动。收到 2 个字符。重新连接
问题描述
我有一个 symfony / api 平台服务器。我添加了 Mercure 以将 SSE 发送到 API 客户端。在我的客户端,我使用事件源 Polyfill 进行订阅。
我设法接收消息,但出现以下错误:
错误:45000 毫秒内没有活动。收到 2 个字符。重新连接。
我读到需要心跳来保持连接并避免此错误。
然后我将心跳指令添加到集线器命令行:
SERVER_NAME=:3000 MERCURE_PUBLISHER_JWT_KEY='toto' MERCURE_SUBSCRIBER_JWT_KEY=$(cat ../config/jwt/public.pem) MERCURE_SUBSCRIBER_JWT_ALG=RS256 HEARTBEAT_INTERVAL=15s READ_TIMEOUT=2m ./mercure run -config Caddyfile.dev
但没有任何改变。我仍然有这个错误。
我错过了什么?
谢谢您的帮助
解决方案
您需要在Caddyfile
=>中添加以下配置heartbeat 15s
route {
encode zstd gzip
mercure {
# Transport to use (default to Bolt)
transport_url {$MERCURE_TRANSPORT_URL:bolt://mercure.db}
# Publisher JWT key
publisher_jwt {env.MERCURE_PUBLISHER_JWT_KEY} {env.MERCURE_PUBLISHER_JWT_ALG}
# Subscriber JWT key
subscriber_jwt {env.MERCURE_SUBSCRIBER_JWT_KEY} {env.MERCURE_SUBSCRIBER_JWT_ALG}
heartbeat 15s
# Extra directives
{$MERCURE_EXTRA_DIRECTIVES}
}
respond /healthz 200
respond "Not Found" 404
}
推荐阅读
- ruby - 没有 sudo 命令的 Jekyll 安装错误
- linux - 构建 docker:未找到 opt/conda/bin/conda
- javascript - 如何将我的值附加到谷歌电子表格 OAUTH/GAPI js
- amazon-web-services - AWS 中的密码格式的秘密
- python - KivyMD - MDRectangleFlatButton - 按钮阴影动画太慢
- css - 如何在不使用绝对定位的情况下使用内联伪元素将元素包裹在内联元素周围
- reactjs - 反应属性映射问题
- node.js - Azure 管道中的数据库迁移
- sql-server - 如何仅检索 SQL Server 数据库模型的用户定义属性
- angular - Angular 指令从 NgModel 或 FormControlName 获取值