uniapp 小程序AP配网

一、TCPSocket.js 封装TCP协议

javascript 复制代码
class socket {
  constructor() {
    this.connection = {};
  }
  // 创建一个TCP实例
  establish(monitor) {
    this.connection = wx.createTCPSocket();
    this.connection.connect({ address: "000.000.0.0", port: 6800 });
  }
  // 发送消息
  connect(message) {
    this.connection.onConnect(() => {
      this.connection.write(message);
    });
  }
  // 监听端口函数
  onMessage(success, failure) {
    this.connection.onMessage((res) => {
      success(res)
    });
    this.connection.onError((err) => {
      failure(err);
    });
  }

  // 关闭搜索事件
  TCPclose() {
    setTimeout(() => {
      // 3S后,关闭socket
      this.connection.close(() => {
        console.log("TCP关闭");
      });
    }, 3000);
  }
}
const TCPSocket = new socket();
export default TCPSocket;

二、vue文件中使用TCP

javascript 复制代码
<template>
  <view class="zai-box">
        <view class="container">
          <text class="textName">{{ wifiSSID }}</text>
          <input type="text" placeholder="请输入WLAN密码" v-model="password" />
        </view>
        <button
          class="loginButton"
          :loading="loadingWIfi"
          :disabled="JSON.stringify(password.length) < 8 || loadingWIfi"
          @click="settiing"
        >
          {{ loadingWIfi ? "连接中" : "连接" }}
        </button>
  </view>
</template>

<script>
import TCP from "@/common/util/TCPSocket.js";
export default {
  data() {
    return {
      wifiSSID: "WIFI name",
      password: "",
      isFirst: true,
      wifiCountInterval: null,
      wifiCountDown: 0,
      loadingWIfi: false,
    };
  },
  onHide() {
    this.clearInterval();
  },
  methods: {
    settiing() {
      this.loadingWIfi = true;
      this.onConfirm();
    },
    onConfirm() {
      this.wifiCountDown = 60;
      this.startSMSTimer();
      if (this.isFirst) {
        // TCP实例创建
        // 连接端口
        TCP.establish();
        this.isFirst = false;
      }

      // 请求设备上报状态
      this.udpsend();
      // 开始监听
      TCP.onMessage(
        (res) => {
          if (!res) return;
          // 关闭TCP连接
          TCP.TCPclose();
          console.log(res) // 查看返回数据
          
        },
        (err) => {
          // debug
          console.log(err, "err");
        }
      );
    },
    udpsend() {
      const msgData = {
        event: "network",
        data: {
          ssid: this.wifiSSID,
          password: this.password,
        },
      };
      TCP.connect(JSON.stringify(msgData));
    },
    startSMSTimer() {
      this.wifiCountInterval = setInterval(() => {
        this.wifiCountDown--;
        if (this.wifiCountDown <= 0) {
          clearInterval(this.wifiCountInterval);
          this.wifiCountInterval = null;
          // 响应超过60秒后的操作
          // ........
        }
      }, 1000);
    },
    clearInterval() {
      if (this.wifiCountInterval) {
        clearInterval(this.wifiCountInterval);
        this.wifiCountInterval = null;
      }
    },
  },
};
</script>

<style scoped>
.zai-box {
  padding: 0;
  margin: 0;
}

.container {
  padding: 30rpx;
  margin: 0 0 20rpx;
  font-size: 28rpx;
  color: #20212b;
  background-color: #fff;
  text-align: left;
  font-weight: 400;
}

.loginButton {
  font-size: 36rpx;
  width: 690rpx;
  color: #fff;
  background-color: #00a0e9;
  border-radius: 44rpx;
  margin: 60rpx auto 0;
  border: none;
}

.loginButton[disabled] {
  color: #fff;
  background-color: #dfdfdf;
}

button::after {
  border: none;
}

.textName {
  display: block;
  font-size: 28rpx;
  font-weight: 500;
  color: #20212b;
  margin-bottom: 30rpx;
}
</style>
相关推荐
阿凤211 小时前
uniapp运行到app端怎么打开文件
android·前端·javascript·uni-app
00后程序员张2 小时前
完整教程:如何将iOS应用程序提交到App Store审核和上架
android·macos·ios·小程序·uni-app·cocoa·iphone
00后程序员张3 小时前
iOS应用性能优化全解析:卡顿、耗电、启动与瘦身
android·ios·性能优化·小程序·uni-app·iphone·webview
大力水手~6 小时前
小程序模仿iphone苹果手机滑动选时间
智能手机·小程序
杰建云1676 小时前
小程序如何做裂变?
小程序·小程序制作
Front思7 小时前
解决 uniapp Dart Sass 2.0.0 弃用警告
前端·uni-app·sass
阳光雨滴7 小时前
微信小程序使用canvas自定义富文本内容做图片分享
微信小程序·小程序
杰建云1677 小时前
小程序如何做活动?
小程序·小程序制作
这是个栗子7 小时前
【微信小程序问题解决】微信小程序全局 navigationBarTitleText 不起作用
微信小程序·小程序·导航栏
lpfasd1238 小时前
从“惯性思维”到“规则驱动”:一次微信小程序修复引发的 AI 编程范式思考
人工智能·微信小程序·小程序