问题标签 [mercure]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
symfony - Mercure & Event Source Polyfill:错误:45000 毫秒内没有活动。收到 2 个字符。重新连接
我有一个 symfony / api 平台服务器。我添加了 Mercure 以将 SSE 发送到 API 客户端。在我的客户端,我使用事件源 Polyfill 进行订阅。
我设法接收消息,但出现以下错误:
错误:45000 毫秒内没有活动。收到 2 个字符。重新连接。
我读到需要心跳来保持连接并避免此错误。
然后我将心跳指令添加到集线器命令行:
但没有任何改变。我仍然有这个错误。
我错过了什么?
谢谢您的帮助
php - 使用 Symfony 命令类启动 Mercure Hub 服务器 - 问题 [Symfony]
这个想法是:而不是像这样直接在我们的命令行
中启动Mercure Hub 服务器:
我们想通过使用symfony 命令使它更容易,因此我们可以像这样启动服务器:
注意:我们已经下载了与使 Mercure Hub 服务器工作的文件相对应的存档,我们在其中找到了可执行的mercure.exe并将其解压缩到 symfony 项目根目录中的“mercure 文件夹”中。
那么我们如何解决这个问题并使其在 php 中工作。似乎它不能与绝对路径一起使用。
第二期:
假设我们成功通过了第一个问题,并且有一个替代方案(这对我来说不是首选,所以最好解决第一个问题),方法是添加一个必需的参数来指示 mercure.exe 所在的文件夹,如下所示:
JWT_KEY 无法识别,而当我们在命令行中键入完整命令时它可以正常工作。
那么,这两个问题的原因是什么以及如何解决它们?
docker - 为什么使用 PublisherInterface 向 Mercure Hub 推送更新会引发 TransferException?
我在我的 Windows 机器上的 Docker 容器中使用 Mercure Hub。我有一个 Symfony 应用程序,我想使用 Mercure 包将消息推送到客户端。
当我在客户端 javascript 中获取此端点时(即发布要由集线器推送的消息),我从HTTPClient
内部得到了这个异常PublisherInterface
:
运输异常
fopen():SSL 操作失败,代码为 1。OpenSSL 错误消息:错误:1416F086:SSL 例程:tls_process_server_certificate:certificate verify failed
当我使用 Mercure 调试工具发布消息时,一切正常,但正如我们所见,我的 Symfony 应用程序却不行。我想知道为什么?:)
php - 使用 Symfony 和 Apache 在生产环境中运行 Mercure | HTTPS 问题
我有一个 symfony 应用程序,我正在使用 Mercure。
要运行 Mercure,我使用此命令
我已经安装了 Let's encrypt 颁发的 SSL 证书。我的阿帕奇:
问题。当我尝试订阅某个主题时,会收到此错误
如果我尝试从浏览器获取此 URL,我会遇到同样的问题,但如果我尝试使用 http://,一切都会好起来的,但不幸的是,我无法从我的 https 域请求 http。
如果有人可以帮助我,我会很高兴 =)
php - Symfony + Mercure 连接问题。使用 HTTPS 而不是 HTTP
我试图在两个 docker 容器之间建立连接。一个是 nginx 服务器 + Symfony 应用程序,第二个是 Mercure。
我的应用程序运行良好,docker-compose build 也可以正常运行。问题是当我尝试测试它并尝试从 Symfony 应用程序向 Mercure 发布内容时,我收到 500 内部服务器错误,并显示“无法发送更新”。信息。
在堆栈跟踪中,我可以看到我得到了 TransportException 错误,其 env 变量与我在.env文件中的不同。应用程序正在尝试使用 HTTPS 而不是 .env 文件中定义的 HTTP。
Symfony\Component\HttpClient\Exception\TransportException:“https://mercure/.well-known/mercure”的 SSL 连接错误。在供应商/symfony/http-client/Chunk/ErrorChunk.php:65
在美居容器中,我得到:
我的 docker-compose 配置
这是我的控制器,当我发布到美居主题时:
symfony - Nginx 反向代理背后的 Mercure 集线器
我尝试在服务器上部署 Mercure 集线器。
已经有一个 Symfony 应用程序(REST API)服务于 Apache2(以及在反向代理中配置的 Nginx)。我的想法是将 API 代理保留为 Apache2,并将 Mercure 订阅配置为转发到 Mercure Hub(Caddy 服务器)。
API 部分一切正常,但无法正确配置 Nginx 和 Caddy 以协同工作。我准确地说,当它不在 Nginx 后面时,我成功地到达了集线器。我使用自定义证书,出于某种原因,每次尝试订阅集线器时,都会出现以下错误:
proxy_pass https://mydomain:3000;
如果我使用而不是修改我的 Nginx 配置proxy_pass https://127.0.0.1:3000;
,则错误变为:
Caddy 或 Nginx 日志中没有进一步的解释。
我的猜测是 Nginx 没有将正确的请求域转移到 Caddy,但我不知道为什么,因为我正确应用了我在规范中找到的配置说明。任何帮助将不胜感激,谢谢!
Caddy.dev 配置
NGinx 虚拟主机配置
启动 Mercure 中心的命令
javascript - 我看到 Mercure 显示所有事件(新订阅者、已发布更新但订阅者已断开连接)
Mercure 更新已发布,但订阅者断开连接。Mercure 再次自动重新连接,客户端 SSE 在第二次尝试中获取数据,性能最差。
我做错什么了吗?
javascript - Symfony / Mercure / JS EventSource 不发送 cookie
我已经阻止这个问题 2 天了。我正在尝试为 Mercure 设置身份验证,以便客户可以订阅“私人”集线器。所以我按照 Symfony 和 Mercury 文档中的规定配置了我的环境变量,它们是:
我的应用 Symfony 的 .env:
我的球童文件:
我的容器美居:
这是我的控制器生成授权 cookie 和发布集线器的路由的代码:
我的路线授权:
我在集线器上发布的路线(此路线只是一个测试路线,用于了解我的客户是否订阅良好并收到通知):
和我的 javascript :
当我将路由称为“授权”时,我在响应标头中看到我确实有要发送的 cookie。当我在 JWT.IO 上对其进行解码时,我们可以看到我的 jwt 包含订阅此集线器的信息,但是当我调用我的测试路由时,如果我私下发送此集线器,客户端不会收到通知(在公共场合,一切都很顺利出色地)。所以我的印象是cookies不发送。
symfony5 - Symfony 5 Mercure 无法为“https://127.0.0.1:8000/.well-known/mercure”发送更新 SSL 连接错误
我是学生和初学者,如果我不明白,请提前道歉。我尝试将 Symfony 5 与 mercure 一起使用,但我很难将更新发送到集线器。我检查了 Symfony Mercure 文档的文档,并考虑对此做出很好的贡献,但不是全部。
我已经在我的 Windows 10 上安装了 docker,我直接通过 Symfony cli 安装 Mercure,就像在文档上写的一样。我的参数是cli安装的默认参数。.env
我使用真正的 JWT 机密只是为了示例 ([JWT.io]) 2。
用我的秘密密码。
我用 eventSource 创建了一个 js 文件。
我希望在有人访问重述订单时发送通知:http: //127.0.0.1 :8000/commande/recapitulatif 。在我的控制器中,当地址http://127.0.0.1:8000/commande/recapitulatif被调用时,我添加:
在我需要通知并添加 js 代码的页面上,如果我在 chrome 的应用程序开发人员的网络中检查与 Mercure 的连接,我可以看到:
但是当我尝试访问网址http://127.0.0.1:8000/commande/recapitulatif时出现错误(无法发送更新)和(“https://127.0.0.1:8000/ 的 SSL 连接错误” .well-known/mercure”。)
更新:我改变
至
现在出现错误(未能发送更新)我有(HTTP/1.1 401 Unauthorized 返回“http://127.0.0.1:8000/.well-known/mercure”。)
可能我需要将我的应用程序放到 https 以便与 mercure 建立 ssl 连接?
另一个尝试。我替换 hhttp 我将 https 更改为 http 到我的 .env 和 js 文件。之后,我像这样更改控制器中的代码:
现在我没有错误,但没有通知我的浏览器。
我想要通知的页面的日志:
以及我需要发送通知的日志:
但如果我像这样添加更新:
我的日志是这样的:
如果有人可以帮助我了解我的问题出在哪里,非常感谢。