问题标签 [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.

0 投票
0 回答
75 浏览

symfony - 在 nginx 上部署 mercure 的问题

我有一个 symfony & api 平台应用程序。我想使用 Mercure 来监听我的 API 平台资源的变化。

该配置在本地工作,但我在将其部署到 nginx 服务器时遇到问题。.env 文件

我正在使用以下命令启动 Mercure:

Mercure 运行正常,API 平台向 Mercure 发送更新,我可以在终端中看到消息。问题是,mercure 链接不起作用,我无法通过我的 vue.js 应用程序或浏览器或邮递员收听更改。

我尝试在 .env 文件中使用 MERCURE_PUBLIC_URL,但没有运气。

0 投票
0 回答
152 浏览

php - Symfony 5 Mercure 订阅

我目前尝试在 Symfony 5 中使用 Mercure。我根据文档(https://symfony.com/doc/current/mercure.html)使用 symfony/mercure 包。

我在 Ubuntu 20.04 上,它基于 Docker env(Apache2、PHP8、Mercure 0.13.0、Symfony 5.3)。这是美居 docker-compose 容器

我成功地将更新发送到我的树枝页面。但是当我尝试通过这种方式在订阅上使用授权时

美居 yaml 配置

配置中使用的 MercureJwtProvider

我收到此错误 => https://i.stack.imgur.com/aD6gP.png

如果有人遇到此错误并且可以帮助我...

谢谢 !

0 投票
0 回答
15 浏览

php - Symfony/React/Mercure - 确定哪个主题触发了具有多个主题订阅的事件

我们在 Symfony/React 堆栈上使用 Mercure,我们的应用程序有多个主题订阅。目前,我无法确定哪个主题触发了 FE 上的事件。我们<MercureSubscriber />在 FE 上使用 HOC,它允许一个事件处理程序。我们的事件处理程序当前包含所有主题事件的逻辑,但这不会很好地扩展,因为每个主题事件都会触发所有主题事件的逻辑。

有没有办法通过开箱即用的 Mercure EventStream 消息确定哪个主题触发事件?或者我们是否必须在事件的有效负载中包含一个主题标识符?

谢谢!

0 投票
1 回答
108 浏览

php - Symfony Mercure “发送更新失败”

我在使用 Symfony Mercure\HubInterface 和“纯”PHP 示例向基于 Caddy 的 Mercure Hub 发送更新时遇到问题。

尝试发布更新时(遵循官方 Symfony/Mercure 教程),我收到错误“无法发送更新”,并带有 TransportException:

“SSL 证书问题:无法获取“https://localhost/.well-known/mercure”的本地颁发者证书。

尝试使用“纯”PHP 示例发布时: https ://github.com/dunglas/mercure/blob/main/examples/publish/php.php

我得到错误:

“警告:file_get_contents(https://localhost/.well-known/mercure):无法打开流:第 13 行 /"path"/test.php 中的操作失败”

当我在终端中运行 CURL 示例(https://mercure.rocks/docs/getting-started )时,一切正常:

有谁知道是什么导致了这个问题以及如何解决它?

我在 MacBook Pro M1 上使用 Symfony 6(运行 symfonyCLI 本地开发服务器)和 Mercure Hub 二进制文件,使用以下命令在开发模式下运行它:

我试过用 --no-tls 运行 symfonyCLI 服务器,但也没有用。

0 投票
2 回答
42 浏览

mercure - 在生产中运行 Mercure:404 未找到

我正在与您联系,因为我无法让mercure从事生产工作。

二进制预构建运行良好,但是当我尝试连接到集线器时,我得到 404 no found。

这是我运行的命令:

服务器启动显然没有任何问题:

我的 .env 配置如下:

我的球童文件:

当我尝试通过键入以下命令使用邮递员访问集线器时:

我得到一个 404 找不到。

我在带有 apache2 的 linux debian 10 下。我不明白我做错了什么。谢谢你的帮助。

编辑 21/02/2022

嗨,Mehmet,这是我所做的:

在 /etc/apache2/sites-available monsite.conf 和 monsite-le-ssl.conf :

在 Caddyfile 和 Caddyfile.dev :

显然集线器启动良好,我在控制台中没有错误:

无论我运行 Caddyfile 还是 Caddyfile.dev,在访问https://monsite.com/mercure-hub时,都会收到 500 错误。

0 投票
0 回答
25 浏览

kubernetes - 美居如何处理多个中心订阅?

我想知道当使用 Kubernetes 启动集线器的多个实例时,Mercure 将如何处理订阅。

在这里我们可以阅读:

要订阅更新,客户端会按照服务器发送事件规范打开一个 HTTPS 连接到发布者公布的集线器订阅 URL

但是假设我们有:

  • 2 个集线器HubAHubB2 个不同的 docker 容器(由 kubernetes 运行)
  • 2个客户ClientAClientB
  • ClientA订阅了HubA主题my-topic
  • ClientB订阅HubB了同一主题my-topic

如果ClientA发送一个 HTTP 请求,结果会HubA向他的所有订阅者发送一个事件,那么ClientB将不会收到一个事件(如果我了解 Mercure 的工作原理)。

我计划按照文档中的说明(部署到 Kubernetes 集群)部署我的应用程序。

但我担心某些客户将无法接收所有事件,因为他们不会收听“正确”的集线器。

问题:

  • 真的是美居处理订阅的方式吗(我了解它是如何工作的)吗?
  • 在这种情况下,即使他没有连接到同一个集线器(因为 Kubernetes 可以启动多个容器),如何ClientB接收有关主题的所有事件?my-topicClientA

谢谢你。

0 投票
0 回答
18 浏览

symfony - 如何配置 Mercure 捆绑包以向 Symfony 应用程序上的 Web UI 发送通知

我从 Mercure hub 开始,但我有一些疑问阻止了我。这个想法是在 Symfony 5.4 Web 应用程序(它是一个基于 sf 5.4 的管理 Web 应用程序)中添加一个经典的用户操作后的通知铃<在这种特定情况下,一旦注册了新的患者转移请求,通知就必须出现。对于属于患者当前注册的医疗机构的用户,将启动通知铃。

注意:在本地,它安装了一个 WAMP 服务器,带有一个 Windows 10 上的 https 虚拟主机。

首先,我安装了美居包:composer require mercure

我已经下载了适用于 Windows 操作系统的 mercure 可执行文件。

必要的环境变量:我知道MERCURE_URL它是 Web 服务器和 Mercure 集线器之间通信的MERCURE_PUBLIC_URL地址,它是客户端订阅集线器的地址。

怀疑:基于MERCURE_JWT_SECRET应该生成的数据。这必须是存储在不变的环境变量中的静态 jwt 令牌?

mercure.yaml 上的美居食谱:

疑惑:我不明白JWT在mercure bundle的上下文中的组成,应该如何配置的发布部分?

这是存储新患者转移请求并通过向配置的消息总线发送消息来启动通知过程的操作:

在将响应发送给用户以生成新的患者转移请求并达到异步行为之前,我已将新消息添加到 Symfony 消息总线(特别是其使用原则传输),作为内容的一部分传递of message 已创建的新注册表的公共 ID (idPublico)。

// messenger.yaml 配方的内容:

消息类:

消息处理程序类,这里它封装了调用函数上的美居集线器逻辑:

Doubt: Update 对象的 URI 参数必须是使用 Symfony 路由生成的 URL 还是简单的“形式”?

此时消息不断传递到失败的队列,重试发送到mercure hub,因为我无法配置和运行mercure.exe

在此处输入图像描述

对于客户端,订阅案例,我仍然不明白如何设置 JWT 令牌,但我将把它留给另一个问题