首页 > 解决方案 > 无法将 Flutter 连接到 laravel-websocket 服务器

问题描述

我已经尝试将我的 Flutter 应用程序连接到 laravel-websockets 服务器近一个月了,但我仍然无法弄清楚。

我在我的 Laravel 后端使用 Beyondco Larevel Websockets,并在我的 Flutter 前端使用 pusher_client 和 laravel_echo。

我一直在尝试从我的 ios 模拟器连接到我的 Laravel 后端主机,该主机使用代客安全,但失败了。

我的颤振连接:

Echo echoSetup(token, pusherClient) {
  return new Echo({
    'broadcaster': 'pusher',
    'client': pusherClient,
    'key': DotEnv.env['PUSHER_APP_KEY'],
    'wsHost': DotEnv.env['PUSHER_APP_HOST'],
    'wsPort': 6001,
    'disableStats': true,
    // 'wssPort': 6001,
    // 'forceTLS': true,
    // 'auth': {
    //   'headers': {'Authorization': 'Bearer $token'},
    //   'Content-Type': 'application/json',
    //   'Accept': 'application/json'
    // },
    // 'authEndpoint': "https://${DotEnv.env['PUSHER_APP_HOST']}/broadcasting/auth",
  });
}

PusherClient getPusherClient(String token) {
  PusherOptions options = PusherOptions(
    host: DotEnv.env['PUSHER_APP_HOST'],
    wsPort: 6001,
    encrypted: false,
    cluster: DotEnv.env['PUSHER_APP_CLUSTER'],
    // wssPort: 6001,
    // auth: PusherAuth(
    //   "https://${DotEnv.env['PUSHER_APP_HOST']}/broadcasting/auth",
    //   headers: {
    //     'Content-Type': 'application/json',
    //     'Authorization': 'Bearer ' + token
    //   },
    // ),
  );

  return PusherClient(DotEnv.env['PUSHER_APP_KEY'], options,
      enableLogging: true, autoConnect: false);
}

pusherClient = getPusherClient(token);
pusherClient.connect();
pusherClient.onConnectionStateChange((state) {
  print(
      "previousState: ${state.previousState}, currentState: ${state.currentState}");
});
pusherClient.onConnectionError((error) {
  print(error.message);
});


echo = echoSetup(token, pusherClient);
echo.connect();
echo.channel(channelName).listen(eventName, (PusherEvent e) {
  print("It Worked");
  print(e.data);
});

我的 Flutter 应用程序似乎无法连接。如果它连接,当我启用 SSL 时它将无法工作。

请帮助我解决设置中的问题,为什么我无法从我的 Flutter 应用程序连接到运行 laravel-websocket 的 SSL 代客服务器。

标签: flutterlaravel-echolaravel-websockets

解决方案


推荐阅读