【懒人精灵】小飞侠插件专题——企业级MQTT长连接websocket实时通信

例子


local xfxPluginPath = 'xfxPlugin-release.apk'   -- 读取RC资源文件
local xfxModule = require('lib/XfxPlugin')

local XFX = xfxModule:new({
    apkPath = xfxPluginPath,
    preloadOps = {'stringOps', 'timeOps'},  -- 可选
})

-- 获取屏幕信息
local screenOps = XFX:getOps('screenOps')
local screenWidth = screenOps.getScreenWidth()
local screenHeight = screenOps.getScreenHeight()
print('屏幕宽度: ' .. tostring(screenWidth))
print('屏幕高度: ' .. tostring(screenHeight))

-- 获取设备信息
local deviceOps = XFX:getOps('deviceOps')
local deviceID = deviceOps.getAndroidID()
print('设备ID: ' .. tostring(deviceID))

-- 打开浮窗日志,方便观察 MQTT 状态
XFX:showFloatLogWindow({
    left = math.floor(screenWidth / 2),
    top = math.floor(screenHeight / 4),
    width = math.floor(screenWidth / 2),
    height = math.floor(screenHeight / 6),
    isShowProgressBar = true,
    isBottomInfo = true,
    isControlBtn = true,
})

XFX:setFloatLogTitle('XFX MQTT Demo')
XFX:setFloatLogInfo('准备连接 MQTT...')

-- 初始化 MQTT 客户端(使用 ws://xxxxxxxx:8085/mqtt)
XFX:initMqttClient({
    protocol = 'ws://',
    host = 'xxxxxxxx',
    port = 8085,
    path = '/mqtt',
    clientId = 'Android_'..deviceID,          -- 为空则自动生成
    username = 'feiYun',  -- 按你自己的 EMQX 配置
    password = 'testPass',

    keepAliveInterval = 60,
    maxReconnectAttempts = -1,
    baseReconnectDelayMs = 1000,
    maxReconnectDelayMs = 30000,
    isAsyncConnect = true,
    cleanSession = true,
    -- 遗嘱消息
    willTopic = 'client/lastwill',
    willPayload = 'client offline',
    willQos = 1,
    willRetained = false,

    onConnected = function()
        XFX:logs('MQTT 已连接')
        XFX:setFloatLogInfo('MQTT 已连接,开始订阅与发布...')
        -- 连接成功后订阅一个主题并发一条消息
        XFX:mqttSubscribe('test/topic', 1)
        XFX:mqttPublish('test/topic', 'Hello MQTT From LazyMan', 1, false)
    end,

    onConnectionLost = function()
        XFX:logw('MQTT 连接断开: ' .. tostring(XFX:getLastMqttError()))
        XFX:setFloatLogInfo('MQTT 连接已断开,等待自动重连...')
    end,

    onMessage = function(msgJson)
        XFX:logi('收到 MQTT 消息: ' .. tostring(msgJson))
    end,

    onDeliveryComplete = function()
        XFX:logd('MQTT 消息发送完成')
    end,
})

-- 发起连接
XFX:mqttConnect()

-- 运行一段时间后关闭(示例)
sleep(30000)
XFX:mqttDisconnect()
XFX:mqttClose()
XFX:closeFloatLog()

EMQX后台显示效果

file

file

安卓显示效果

file

1. 官方交流QQ群,添加多个不批。建议使用安卓手机或电脑申请。
飞云脚本圈: 586333520飞云脚本圈
Auto.js学习交流③群:286635606
Auto.js学习交流②群:712194666(满员)
IOS免越狱自动化测试群:691997586
2. 盗版,破解有损他人权益和违法作为,请各位会员支持正版。
3. 本站部分资源来源于用户上传和网络搜集,如有侵权请提供版权证明并联系站长删除。
4.如未特别申明,本站的技术性文章均为原创,未经授权,禁止转载/搬运等侵权行为。
5.全站所有付费服务均为虚拟商品,购买后自动发货。售出后概不接受任何理由的退、换。注册即为接受此条款。
6.如果站内内容侵犯了您的权益,请联系站长删除。
飞云脚本 » 【懒人精灵】小飞侠插件专题——企业级MQTT长连接websocket实时通信

企业级大数据智能营销管理系统

源码转让