第二天,我不能让我的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做的正是我想让它做的。
1条答案
按热度按时间juzqafwq1#
在registerStompEndpoints内部的方法中,使用
也可以在flutter ws_url变量中写入“ws://localhost:8080/our-websocket”