搭建基于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();