首页 > 解决方案 > 颤振应用程序无法连接到 webSocket

问题描述

我正在构建一个颤振应用程序,它需要连接到服务器并使用 websocket 交换数据。服务器是 JAVA 并使用 SockJs 和 Stomp 来实现这个功能。

我正在使用来自 pub.dev/packages 的 Stomp dart 客户端和 webSocket 包。这是我尝试连接的代码的一部分:

  clientConnect() async {
    String cookie = await storage.read(key: "cookie");
    final stompClient = StompClient(
        config: StompConfig(url: 'ws://192.168.0.13:8080/....', onConnect: onConnect,
            webSocketConnectHeaders: {"cookie": cookie }));
    stompClient.activate();
  }

我面临的问题是,我的颤振应用程序无法连接到服务器并引发此错误。

 WebSocketException: Connection to 'http://192.168.0.12:8080/....' was not upgraded to websocket

标签: flutterdartwebsocketstomp

解决方案


迟到的答案(stomp 包的维护者):

由于您似乎在 java 端使用 StompJS,因此您需要在客户端中使用特殊的 StompJS 配置。这是文档中的示例:

https://pub.dev/packages/stomp_dart_client#use-stomp-with-sockjs

StompClient client = StompClient(
    config: StompConfig.SockJS(
        url: 'https://yourserver',
        onConnect: onConnectCallback
    )
);

推荐阅读