WebSocketChannelException: HandshakeException - Flutter 应用程序与自定义服务器上的 Laravel Websockets 使用 Cpanel 验

Posted

技术标签:

【中文标题】WebSocketChannelException: HandshakeException - Flutter 应用程序与自定义服务器上的 Laravel Websockets 使用 Cpanel 验证【英文标题】:WebSocketChannelException: HandshakeException - Flutter app with Laravel Websockets on custom server Cerificated with Cpanel 【发布时间】:2019-12-13 14:05:03 【问题描述】:

我的 Laravel Web 应用程序包括依赖 Laravel Websockets https://docs.beyondco.de/laravel-websockets/ 的实时聊天

现在我正在为相同的服务制作 Flutter 应用程序,我遇到了连接到我已经在 wss 上制作的 websocket 的问题(我有这个代码)

var channel = IOWebSocketChannel.connect("wss://site.com:6001/app/123456789");

channel.sink.add(json.encode(
  "event": "pusher:subscribe",
  "data": "channel": "channel-name"
));

channel.stream.listen((_data) 
  print(_data.toString());
, onError: (error) 
  print("Socket: error => " + error.toString());
, onDone: () 
  print("Socket: done");
);

我遇到了这个问题:CERTIFICATE_VERIFY_FAILED 我搜索了很多但没有任何帮助 - 我尝试的一件事是制作一个 SecureSocket

SecureSocket secureSocket = await SecureSocket.connect(
    'www.site.com', 6001,
    onBadCertificate : (X509Certificate cert) => true).then((SecureSocket secureSocket) 

  secureSocket.listen((List<int> event) 
    print(utf8.decode(event));
  );

).catchError((error) 
  print(error);
);

此代码没有返回错误,但它根本没有连接。

注意:相同的代码适用于 ios 模拟器,但不适用于 android

我还测试了我的 ssl 证书,它显示了这个结果: https://ibb.co/chyFPtX

谁能帮我解决这个问题?

【问题讨论】:

有进步的朋友吗?我发现自己处于同样的境地。 【参考方案1】:

laravel websockets 连接支持 pusher 驱动,尝试使用 pusher client 代替已经内置协议的。

【讨论】:

以上是关于WebSocketChannelException: HandshakeException - Flutter 应用程序与自定义服务器上的 Laravel Websockets 使用 Cpanel 验的主要内容,如果未能解决你的问题,请参考以下文章