当前位置:   article > 正文

微信小程序实现Tcp长连接以及断线重连_微信小程序tcp长连接

微信小程序tcp长连接

  针对微信小程序中Tcp的连接,断开,重连以及心跳机制,以下代码做了简单的实现,有需求的可参考。

接收消息时候我做了事件处理,以便每个页面可正常处理消息。

  1. App({
  2. globalData: {
  3. isConnected: false,
  4. socketTask: null,
  5. serverHostname: 'example.com',
  6. serverPort: 80,
  7. heartbeatInterval: 5000, // 心跳包间隔时间,单位为毫秒
  8. heartbeatTimer: null
  9. },
  10. onShow: function () {
  11. if (!this.globalData.isConnected) {
  12. this.connectToServer();
  13. }
  14. },
  15. connectToServer: function () {
  16. let that = this;
  17. this.globalData.socketTask = wx.createTCPSocket();
  18. this.globalData.socketTask.onConnect(() => {
  19. console.log('连接成功');
  20. that.globalData.isConnected = true;
  21. // 开始心跳包定时发送
  22. that.startHeartbeat();
  23. });
  24. this.globalData.socketTask.onError((res) => {
  25. console.log('连接出错', res);
  26. that.globalData.isConnected = false;
  27. that.stopHeartbeat(); // 停止发送心跳包
  28. });
  29. this.globalData.socketTask.onClose(() => {
  30. console.log('连接关闭');
  31. that.globalData.isConnected = false;
  32. that.stopHeartbeat(); // 停止发送心跳包
  33. });
  34. // 连接服务器
  35. this.globalData.socketTask.connect({
  36. hostname: this.globalData.serverHostname,
  37. port: this.globalData.serverPort,
  38. success: function () {
  39. console.log('连接成功');
  40. },
  41. fail: function (res) {
  42. console.log('连接失败', res);
  43. that.globalData.isConnected = false;
  44. that.stopHeartbeat(); // 停止发送心跳包
  45. }
  46. });
  47. },
  48. startHeartbeat: function () {
  49. let that = this;
  50. this.globalData.heartbeatTimer = setInterval(() => {
  51. if (that.globalData.isConnected) {
  52. // 发送心跳包数据
  53. that.sendHeartbeatData();
  54. }
  55. }, this.globalData.heartbeatInterval);
  56. },
  57. sendHeartbeatData: function () {
  58. // 向服务器发送心跳包数据的逻辑
  59. // 可以是一个简单的数据包,用于告知服务器连接仍然有效
  60. // 如果长时间没有收到服务器的响应,可以在这里处理重新连接的逻辑
  61. },
  62. stopHeartbeat: function () {
  63. clearInterval(this.globalData.heartbeatTimer);
  64. }
  65. });

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/678002
推荐阅读
相关标签
  

闽ICP备14008679号