已删除用户
发布于 2023-08-18 / 0 阅读 / 0 评论 / 0 点赞

搭建基于Unity的MQTT通信环境

搭建基于Unity的MQTT通信环境

MQTT配置

下载EMQX

https://www.emqx.io/zh/downloads

启动EMQX

下载 完毕解压后,使用命令行下进入解压路径,启动 EMQX。

./emqx/bin/emqx start

网页输入:http://localhost:18083 查看服务是否启动成功

默认帐号:admin 密码:public

双端调试

新增客户端1并连接

访问MQTT Web页面 https://mqttx.app/

新增客户端2并连接

http://localhost:18083/#/websocket

查看当前所有客户端连接状态

http://localhost:18083/#/clients

客户端订阅主题

客户端发送

客户端接收

服务器端查看客户端历史消息

http://localhost:18083/#/retained

Unity客户端配置

引入基于u3d的mqtt类库

https://github.com/vovacooper/Unity3d_MQTT

MQTT网络通信

核心脚本:NetworkMqtt.cs

标题:Mqtt网络通信协议

功能:初始化,与代理连接、断开,发布消息,订阅主题,收发消息事件回调

            //核心API基于MFramework
            //初始化并订阅主题
            NetworkMqtt.GetInstance.Init(new MqttConfig()).Subscribe(MqttTopicName.TopicTest);
            //监听消息回调
            NetworkMqtt.GetInstance.AddListener((object sender, MqttMsgPublishEventArgs e) =>
            {
                Debug.Log($"通过代理收到消息:{Encoding.UTF8.GetString(e.Message)}");
            });
            NetworkMqtt.GetInstance.AddListener((object sender, MqttMsgSubscribedEventArgs e) =>
            {
                Debug.Log($"客户端订阅消息成功回调 ,sender:{sender}");
            });
            //订阅多个主题
            NetworkMqtt.GetInstance.Subscribe("TopicTest1", "TopicTest2");
            //发送消息
            NetworkMqtt.GetInstance.Publish(MqttTopicName.TopicTest, "Unity Send Msg:" + System.DateTime.Now.ToString());
            //断开代理连接
            NetworkMqtt.GetInstance.DisConnect();
    

测试基于Unity的Mqtt协议通信


评论