You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Reverb与React Native集成:react-native-pusher SDK兼容性确认

Laravel Reverb 与 React Native 集成:@pusher/pusher-websocket-react-native 兼容性确认

兼容性确认

目前@pusher/pusher-websocket-react-native确实存在与Laravel Reverb的兼容问题。Reverb虽兼容Pusher协议,但该React Native SDK的底层实现是针对官方Pusher服务优化的,尚未适配Reverb在连接路径、认证端点处理等细节上的差异,直接使用大概率会出现连接失败或事件接收异常的情况。

你在Vue项目中用pusher-js能正常工作,是因为pusher-js作为通用JS SDK,支持灵活配置自定义服务地址、路径等参数,完全适配Reverb的协议要求。

可行的解决方案

方案1:调整Echo配置尝试适配

尝试补充Reverb专属配置参数,强制SDK适配Reverb的连接逻辑:

import Echo from "laravel-echo";
import { Pusher } from "@pusher/pusher-websocket-react-native";

export const connectToWebSocket = async () => {
  try {
    const echo = new Echo({
      broadcaster: "reverb",
      client: Pusher,
      key: "samplekey", // 你的Reverb应用密钥
      wsHost: "127.0.0.1",
      wsPort: 8080,
      wssPort: 8080,
      scheme: "http", // 本地测试建议用http,生产环境换https
      path: "/reverb", // Reverb默认的WebSocket路径
      enabledTransports: ["ws", "wss"],
      authEndpoint: "http://127.0.0.1/api/broadcasting/auth", // Laravel广播认证端点
      auth: {
        headers: {
          // 携带认证所需请求头,比如Authorization
          Authorization: `Bearer ${yourAuthToken}`,
        },
      },
    });

    // 订阅频道并监听事件
    const channel = echo.channel("sample-channel");
    channel.listen(".SampleEvent", (payload) => {
      console.log("接收事件数据:", payload);
    });

  } catch (error) {
    console.error("WebSocket连接错误:", error);
  }
};

注意:这种方法不一定能完全解决问题,部分版本的SDK可能存在硬编码的Pusher服务校验逻辑。

方案2:改用pusher-js配合React Native polyfill

如果需要稳定的集成效果,可以放弃原生封装的SDK,改用pusher-js并添加WebSocket polyfill:

  1. 安装依赖:
npm install pusher-js laravel-echo react-native-url-polyfill
  1. 在项目入口文件(如App.js)引入polyfill:
import 'react-native-url-polyfill/auto';
  1. 初始化Echo:
import Echo from "laravel-echo";
import Pusher from "pusher-js";

export const connectToWebSocket = async () => {
  try {
    const echo = new Echo({
      broadcaster: "reverb",
      client: Pusher,
      key: "samplekey",
      wsHost: "127.0.0.1",
      wsPort: 8080,
      wssPort: 8080,
      scheme: "http",
      path: "/reverb",
      enabledTransports: ["ws", "wss"],
      authEndpoint: "http://127.0.0.1/api/broadcasting/auth",
      auth: {
        headers: {
          Authorization: `Bearer ${yourAuthToken}`,
        },
      },
    });

    echo.channel("sample-channel").listen(".SampleEvent", (payload) => {
      console.log("事件数据:", payload);
    });

  } catch (error) {
    console.error("连接错误:", error);
  }
};

这种方案复用了你在Vue项目中验证过的逻辑,兼容性更可靠。

内容的提问来源于stack exchange,提问作者John Mark Ovalo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 22:27:37