崩溃!!flutter使用mqtt

 

flutter: client Connection exception - WebSocketException: Connection to 'https://aaa.bbb.ccc:xxxx#' was not upgraded to websocket

搞崩溃了,一直调不通,github上也没有解决办法

一直试,一直试,一直试,居然就可以连接成功了。。。

复制个源码吧,我也不知道是哪儿设置对了,然后就可以连接了

mqtt_client: ^7.3.0 

import 'dart:async';
import 'dart:math';
import 'package:mqtt_client/mqtt_client.dart';
import 'package:mqtt_client/mqtt_server_client.dart';

Future<int> mqttManager() async {
  final client = MqttServerClient.withPort(
    'ws://aa.bbb.ccc.ccc',
    '',
    8083,
    maxConnectionAttempts: 10,
  );

  ///用户名
  String username = 'XXXXX';

  ///密码
  String password = 'BBBBB';

  ///是否开启日志
  client.logging(on: false);

  ///设置超时时间
  client.keepAlivePeriod = 60;

  ///设置连接成功的回调
  client.onConnected = onConnected;

  ///设置断开连接的回调
  client.onDisconnected = onDisconnected;

  ///ping的回调
  client.pongCallback = pong;

  client.useWebSocket = true;
  client.websocketProtocols = ['mqtt'];

  ///订阅的回调
  client.onSubscribed = onSubscribed;
  final connMess = MqttConnectMessage()
      .authenticateAs(username, password)
      .withClientIdentifier('seda@1234567890')
      .keepAliveFor(60) // Must agree with the keep alive set above or not set
      .withWillTopic('willtopic') // If you set this you must set a will message
      .withWillMessage('My Will message')
      .startClean() // Non persistent session for testing
      .withWillQos(MqttQos.atLeastOnce);
  print('mqtt:正在连接中...$connMess');
  client.connectionMessage = connMess;

  ///开始连接
  try {
    await client.connect();
  } on Exception catch (e) {
    print('mqtt连接异常 - $e');
    client.disconnect();
  }

  ///检查连接结果
  if (client.connectionStatus.state == MqttConnectionState.connected) {
    print('mqtt已连接');
  } else {
    print(
        'mqtt连接:失败 - disconnecting, state is ${client.connectionStatus.state}');
    client.disconnect();
    // exit(-1);
  }

  ///订阅一个topic: 服务端定义的事件   当服务器发送了这个消息,就会在 client.updates.listen 中收到
  const topic = 'slab/sichuan/seda/rtdata'; // Not a wildcard topic
  // const topic = 'envp/sichuan/yongsheng/rtdata'; // Not a wildcard topic
  client.subscribe(topic, MqttQos.atLeastOnce);

  ///监听服务器发来的信息
  client.updates.listen((dynamic c) {
    final MqttPublishMessage recMess = c[0].payload;

    ///服务器返回的数据信息
    final pt =
        MqttPublishPayload.bytesToStringAsString(recMess.payload.message);
    print('服务器返回的数据信息: topic is <${c[0].topic}>, payload is <-- $pt -->');
  });

  ///设置public监听,当我们调用 publishMessage 时,会告诉你是都发布成功
  client.published.listen((MqttPublishMessage message) {
    print('message-----$message');
  });

  return 0;
}

/// The subscribed callback
void onSubscribed(String topic) {
  print('订阅内容: $topic');
}

/// The unsolicited disconnect callback
void onDisconnected() {
  print('mqtt连接:关闭');
  // exit(-1);
}

void onConnected() {
  print('mqtt连接:成功');
}

void pong() {
  print('mqtt连接:ping');
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值