微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 expo 通过 React Native 收听 Mercure 服务器?

如何解决如何使用 expo 通过 React Native 收听 Mercure 服务器?

由于 API 平台,我目前有一个使用 React Native 制作的移动应用程序以及一个使用 Symfony 制作的 API。

这两个应用程序相互通信良好。

为了在应用上创建通知系统,我添加并配置了 Mercure 服务器。

但是,自添加 Mercure 以来,API 和应用之间似乎存在通信问题。

我想澄清一下,我通过 reactjs 中的 Web 项目测试了完全相同的配置,并且没有问题。

因此,我怀疑 Mercure 和应用程序之间存在访问问题。 (我使用 expo 在本地测试我的应用程序)

这是我的 symfony .env 文件

MERCURE_URL=http://127.0.0.1:3000/.well-kNown/mercure
MERCURE_PUBLIC_URL=http://127.0.0.1:3000/.well-kNown/mercure
MERCURE_PUBLISH_URL=http://127.0.0.1:3000/.well-kNown/mercure
MERCURE_JWT_SECRET=mykeyp
MERCURE_PUBLISHER_JWT_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJtZXJjdXJlIjp7InB1Ymxpc2giOlsiKiJdfX0.Gvmkhs_Nx9S7yNyNs_TUghfcruiNrNKQBA0D36cGQSA
MERCURE_SUBSCRIBER_JWT_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJtZXJjdXJlIjp7InB1Ymxpc2giOlsiKiJdfX0.Mzezd1YtkgCmlEDQg4qwNCFql1JXCXk1Vg-tB8UHgSk

这是用于启动 Mercure 服务器的命令

SERVER_NAME=:3000 MERCURE_PUBLISHER_JWT_KEY="mykeyp" MERCURE_SUBSCRIBER_JWT_KEY="mykeys" ./mercure/mercure run -config mercure/Caddyfile.dev CORS_ALLOWED_ORIGINS=https://localhost:8000

我正在使用 ngrok 通过我的移动应用联系我的 API。我还尝试在端口 3000 上运行 ngrok 以通过该应用程序联系 Mercure,但仍然出现此错误:401 UnAuthorized。

这是我的js代码

const uri = encodeURIComponent(`${api_address}/api/users/3`);
        const eventSource = new RNEventSource(`${mercure_address}/.well-kNown/mercure?topic=${uri}`);
        eventSource.addEventListener('message',(event) => {
            let data = JSON.parse(event.data);
            console.log(data)
        }
)

我还指定在端口 8000 上启动 Symfony,在端口 3000 上启动 Mercure。

提前致谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。