flutter WebSocket +Spring抖动,网络套接字通道异常:[对象事件]

byqmnocz  于 2022-11-17  发布在  Flutter
关注(0)|答案(1)|浏览(260)

第二天,我不能让我的flutter移动的应用程序通过WebSocket接收消息。
据我所知,我使用StompClient与WebSocket消息代理一起工作
日志中只有一个错误:Web套接字通道异常错误:[对象事件]
我在互联网上找不到任何关于这个错误或如何在Flutter上使用Web套接字的信息。
我会非常感激任何帮助!
从Spring配置:

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

    @Override
    public void configureMessageBroker(final MessageBrokerRegistry registry) {
        registry.enableSimpleBroker("/topic");
        registry.setApplicationDestinationPrefixes("/ws");
    }

    @Override
    public void registerStompEndpoints(final StompEndpointRegistry registry) {
        registry.addEndpoint("/our-websocket").withSockJS(); 
    }
}

Flutter 应用程序

StreamController<List<String>> streamController = StreamController();
String ws_url = "ws://localhost:8080/our-websocket/websocket";
String destination = "/topic/messages";
String message_destination = "/ws/message";
var _listMessage = <String>[];

void main() {
  runApp(MaterialApp(
    debugShowCheckedModeBanner: false,
    home: MyApp(),
  ));
}

void onConnect(StompFrame frame) {
  stompClient.subscribe(
    destination: destination,
    callback: (frame) {
      Map<String, dynamic> result = json.decode(frame.body!);
      //receive Message from topic
      _listMessage.add(result['content']);

      //Observe list message
      streamController.sink.add(_listMessage);
    },
  );
}

final stompClient = StompClient(
  config: StompConfig(
    url: ws_url,
    onConnect: onConnect,
    onWebSocketError: (dynamic error) => print(error.toString()),
  ),
);

...(application rendering)

如果您使用Web应用程序作为前端,Spring Web Socket就可以工作。js做的正是我想让它做的。

juzqafwq

juzqafwq1#

在registerStompEndpoints内部的方法中,使用

registry.addEndpoint("/our-websocket").setAllowedOrigins("*");

也可以在flutter ws_url变量中写入“ws://localhost:8080/our-websocket”

相关问题