如何在Flutter中订阅Websocket主题?

时间:2019-08-08 18:15:01

标签: flutter dart websocket

问题是我找不到订阅WebSocket主题的解决方案。

我已经尝试过 web_socket_channel ,但是没有必要的功能来订阅特定主题。

此外,我尝试了 stomp_sockjs ,但是它要求SDK版本为<2.0.0。我当前的Dart SDK版本是2.4.0,我不想降低它,因为它会破坏我拥有的所有其他依赖关系。

在其他WebSocket库(例如 adhara_socket_io )中,我找不到订阅主题的方法。

sockjs stomp 库的帮助下,我设法使用JS使用了WebSocket中的数据。但是,如何做到这一点呢?

function connect() {
            stompClient = Stomp.client("ws://xx.xxx.xxx.xxx/somePath");
            stompClient.connect({"Access-Control-Allow-Origin":"*"}, function (frame) {
                setConnected(true);
                console.log('Connected: ' + frame);
                stompClient.subscribe('/topic/someStatus', function (greeting) {
                    showGreeting(JSON.parse(greeting.body));
                });
            });
        }

因此,我想找到一种解决方法,但在我的Flutter应用程序中可以实现同样的目的

2 个答案:

答案 0 :(得分:1)

WebSockets没有主题概念-您在JS中使用的协议称为STOMP,因此您需要为Dart使用STOMP库。

Pub上有一些STOMP软件包,但我不知道它们有多完整(或值得信赖):

尽管STOMP中的S代表“简单”,但如果两者都不起作用,那么实现自己就不会太困难。

答案 1 :(得分:0)

我已经找到了解决方法:https://github.com/killerWqs2/flutter-websocket-client

它允许通过WebSockets订阅一个踩脚主题