问题标签 [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 回答
93 浏览

symfony - 将 Mercure Hub 添加到 DDEV

我只是通过学习 Symfonys Turbo 实现来学习如何使用 Mercure。

我刚刚学习了 Symfonycasts Turbo 课程,并且通过 symfony 二进制文件/Symfony Local Web Server 使用 Turbo Streams 和 Mercure Hub 没有任何问题。

我的下一步是在我正在与我的团队合作的“真实”项目中尝试整个事情。

由于我们在团队中使用 DDEV 进行本地开发,因此我尝试将 mercure 实施到我的 DDEV 环境中。

我是 docker compose 和 DDEV 的新手,所以我只是尝试按照关于定义自定义服务的 DDEV 文档部分进行操作 ,其中说:

要为您的项目添加自定义配置或其他服务,请在 .ddev 目录中为您的项目创建 docker-compose 文件。ddev 将使用 docker-compose.[servicename].yaml 命名约定处理任何文件,并将它们包含在执行 docker-compose 功能中。

DDEV 文档还指出了以下步骤:

在为您的项目定义附加服务时,我们建议您遵循这些约定,以确保 ddev 处理您的服务的方式与 ddev 处理默认服务的方式相同。

然后我查看了Mercure 文档,他们提供了一个示例 docker-compose 服务定义,如下所示:

根据 DDEV 文档,我尝试修改示例配置,结果如下:

所以我所做的就是按照容器命名惯例加上两个标签加上只定义内部端口。

但这似乎不起作用,因为我无法访问 mercure hubs url,并且当我尝试在我的应用程序中使用 Mercure Hub 时,正如我之前成功所做的那样,使用 Symfony 服务器而不是 DDEv,我收到以下错误消息:

未能发送更新。

谁能帮我通过 DDEV 配置 Mercure 集线器?

显然,当我查看DDEV-contrib已经提供的内容时,这些内容似乎比我的更复杂。

这是他们为弹性搜索提供的示例配置:

我很感激任何帮助。

0 投票
1 回答
22 浏览

mercure - Mercure Hub 服务器负载 - 更好的解决方案

考虑到服务器负载(Mercure Hub)有什么更好的解决方案?

  1. 用户订阅一个通用主题,以便美居通过这个主题向所有人推送信息,并根据发送数据中的某种 ID,用户端点决定是否对其进行处理。
  2. 或者更好的解决方案是为应用程序中的每个元素设置独特的主题?以便 Mercure Hub 处理有关这一特定主题的数据并将其推送到一定数量的客户端端点?
0 投票
0 回答
19 浏览

mercure - 采用 Litespeed 的 Mercure Hub - 连接时间长

我对 Mercure Hub(旧版)有一个奇怪的问题。我在 Centos Server(非常强大的专用服务器)上使用 PHP 7.4、Apache 和 Symfony 已经很长时间了。最近我们更新到 PHP 8 并从 Apache 迁移到 Litespeed (Enterprise)。现在我们遇到了一个奇怪的连接时间问题。每次我们想通过 Mercure 发布更新时,连接都需要很长时间,大约 19 秒。如果我重新加载 Litespeed,第一次发布速度很快,但下一次发布速度很慢。服务器管理员增加了 Litespeed 超时,它有一点帮助,但作用不大。我说的是大约 1000 个连接。因此,考虑到服务器上的 16 个内核和 16GB RAM,没有什么比这更有趣的了。

知道什么会导致问题吗?

0 投票
0 回答
154 浏览

php - Symfony 5.3、Mercure 和 Vue ->“https://localhost:8000/.well-known/mercure”的 SSL 连接错误

我正在尝试使用集线器接口进行发布,但每次我收到此错误

我正在使用 Symfony 本地 Web 服务器运行 mercure,所以 mercure 它在 https://localhost:8000/.well-known/mercure 上运行。我已经检查过了,它正在运行,但我无法发布。我正在从 Vue 调用的控制器进行此调用。

Stackoverflow 对其他问题的一些评论提到了这一点: Mercure with symfony not working with vue

Mecure 不支持自签名证书,您必须在 http_client.default_configuration 下的 config/dev/framework.yaml 中添加 verify_peer: false

试过了,但对我不起作用。另外,对于我所阅读的内容,不建议将其设置为 false HTTP Certificates

我还尝试在我的 .env 上将 https 更改为 http,但我得到了 401 Unauthorized。

我检查了 symfonycast 教程,他们在 localhost:8000 上有 .env 环境,所以我认为不可能,但我不知道我还能尝试什么。

据我所知,这与 CORS 有关。但不知道如何解决。

任何帮助表示赞赏,
谢谢:)

0 投票
0 回答
80 浏览

php - Mercure - 401 与令牌提供程序

我在这里关注了 Mercure 的 symfony 文档: https ://symfony.com/doc/current/mercure.html#programmatically-generating-the-jwt-used-to-publish

所以我创建了我的令牌提供程序,但是当我使用它时,我得到了 401。我错过了什么吗?

我转储集线器,我看到了一些不同:

当我使用秘密时,我得到了这个(一切都很好):

并与提供者(得到 401):

这里有一些代码:

配置/包/mercure.yaml

src/Mercure/MyTokenProvider

0 投票
0 回答
32 浏览

symfony - symfony 服务会自动执行 Mercure 二进制文件吗?

我是一名初级开发人员,我正在尝试了解 Mercure 的工作原理。我已经设法开发了一个测试应用程序,在该应用程序中,我可以通过遵循一些教程(准确地说是 ping 警报)向特定用户发送事件。

但是有些东西我无法理解:在我遵循的大多数指南中,人们使用这样的命令:

我知道这个命令应该运行你应该在 github/mercure 的“发布”页面中下载的 mercure.exe 文件。

但是,在我的项目中,似乎运行一个简单的“symfony serve”也会启动美居服务器。运行 symfony 服务后,我的终端中有这个日志:

那么,它是否意味着像这样工作?因为在我看过的很多教程中,JWT_KEY 是需要重用的重要数据,但是如果我从来没有定义过,我该怎么做呢?

非常感谢您的阅读,我希望我的英语足够清楚,祝您有美好的一天!

0 投票
0 回答
106 浏览

docker - Docker - Symfony5/Mercure:无法到达 Mercure 集线器

我尝试通过以下 URL 的浏览器访问 Mercure 的中心但没有成功:http://locahost:3000 => ERR_CONNECTION_REFUSED

我使用 Docker 进行开发。这是我的 docker-compose.yml :

我已成功执行:

码头工人 ps -a :

我可以通过 http://localhost:8095 访问我的 Symfony 应用程序,但我不知道应该通过哪个 URL 访问 Mercure 的中心。

谢谢你的帮助 !

0 投票
0 回答
678 浏览

docker - 尝试连接到本地 Caddy 服务器时出现 SSL 错误

我已经从 Symfony/api-platform 设置了一个 Mercure 集线器。Mercure hub 通过 Caddy over SSL 提供服务(例如https://example.com/.well-known/mercure)。Caddy 是一个 dockerized 服务。

我正在尝试在同一个 docker-compose 文件上构建一个 golang 微服务,旨在连接到 Mercure 集线器。此微服务go_sse_listener正在尝试通过 docker 的内部网络连接到 Mercure hub,但由于 ssl 错误而失败

我连接go_sse_listener并发出 curl 命令,以获得更多输入

响应/错误

这是我的生产 docker-compose.prod:yml

和我的 Caddyfile

据我了解:当go_sse_listenerdocker 请求球童域时。它正确地将其解析为适当的 caddy 容器本地 ip,在本例中为:172.20.0.3,但是当 caddy 捕获结果时,它会尝试将其解析为一个名为 caddy 且带有 ssl 的域或主机,它对此一无所知,因此错误。

0 投票
2 回答
375 浏览

php - 使用 Symfony 5 配置 Mercure

我正在尝试编写与 Symfony 5 和 Mercure 的聊天代码,但配置存在一些问题。我使用 Windows 10。

这是我遵循的文档:https ://github.com/dunglas/mercure/blob/main/docs/hub/install.md

我在我的项目中安装了这个版本:mercure_0.13.0_Windows_arm64.zip。然后,我解压它,然后在我的终端中,我运行“ composer require symfony/mercure”。

这是在我的.env

0 投票
2 回答
114 浏览

symfony - Raspbian / Mercure - 绑定:权限被拒绝

我正在尝试在我的 Raspbian 上运行 Mercure。

首先: 我尝试使用 mercure-legacy_0.13.0_Linux_armv6.tar.gz使用以下命令运行mercure

JWT_KEY='example'; ADDR='localhost:3000'; DEMO='1'; ALLOW_ANO NYMOUS='1'; CORS_ALLOWED_ORIGINS='*'; PUBLISH_ALLOWED_ORIGINS='*'; PUBLISHER_JWT_KEY='example' ./mercure run

它返回:

第二:我尝试使用mercure_0.13.0_Linux_armv6.tar.gz使用以下命令运行Mercure

MERCURE_PUBLISHER_JWT_KEY='!ChangeMe!' MERCURE_SUBSCRIBER_JWT _KEY='!ChangeMe!' ./mercure run

球童文件:

它返回:

run: loading initial config: loading new config: http app module: start: tcp: listening on :443: listen tcp :443: bind: permission denied


谁能提供解决方案:我打算在同一个 Raspberrry 上使用 apache2 将我的 symfony 项目托管在 Web 服务器上