置顶 mqant最全javascript客户端库(支持微信小程序,cocos2d,egret,layabox)
发布于 1 年前 作者 liangdas 4634 次浏览 最后一次编辑是 5 个月前 来自 三方模块

mqtt.js发现有网络中断的情况,可能数据解析有bug cocos creator和H5可以优先使用 paho-mqtt.js
需要略微改造一点,下面是我改造好的,cocos creator可用 https://github.com/eclipse/paho.mqtt.javascript

下面链接中的文件保证cocos creator 可以用
https://github.com/liangdas/mqantserver/tree/master/clientlib

MQTT.js是一个支持多种网络协议的mqtt库,支持Node.js 和 browser,在此基础支持我又新增了egret和layabox两种协议

目前MQTT.js支持库种类: tcp tls(ssl) ws (cocos2d,H5) wss wx (微信小程序/小游戏) wxs egret egrets laya layas

引用库

https://github.com/liangdas/MQTT.js/blob/master/browserMqtt.js 游戏开发的中可以直接在html中引用这个已编译好的库

测试示例

https://github.com/liangdas/MQTT.js/blob/master/examples/mqtt.html

cocos 微信小程序

cocos 和 微信小程序可以用umd库的方式引用mqtt库 https://github.com/liangdas/MQTT.js/blob/master/umdMqtt.js

注意事项

//不能直接传json,mqtt.js库没有自动转义 // client.publish(‘Login/HD_Login/1’, { // userName: ‘mqtt’, // passWord: ‘Hello,anyone!’ // });

13 回复

egret中如何使用

var client = mqtt.connect(“egret://127.0.0.1:3653”,{ protocolId: ‘MQIsdp’, protocolVersion: 3, clientId:‘mqttjs_’ + Math.random().toString(16).substr(2, 8), reconnectPeriod:0, //不自动重连 }) // you add a ws:// url here

借串一问,我想在cocos creater 连接 mqant的server,一直没办法成功,能不能提示一下简单的范例,感谢!

用这个库 https://github.com/liangdas/MQTT.js/blob/master/umdMqtt.js

QB20180424-1.png

	var mqtt=require("../Lib/umdMqtt");
  var cfg = {
	  load: function () {
		  console.log('mqtt')
		  var client = mqtt.connect("ws://127.0.0.1:3653",{
			  
		  //var client = mqtt.connect("egret://127.0.0.1:3653",{
		  //var client = mqtt.connect("laya://127.0.0.1:3653",{
			  protocolId: 'MQIsdp',
			  protocolVersion: 3,
			  clientId:'mqttjs_' + Math.random().toString(16).substr(2, 8),
			  reconnectPeriod:0, //不自动重连
		  }) // you add a ws:// url here
		  client.sendMessage=function  (msgid,body) {
			  //发送数据
			  //这里是发送消息给服务端,可以先将 msgid 转 topic
			  client.publish("Login/HD_Login/1", body)
		  }.bind(client);
		  client.on("message", function (topic, payload) {
			  console.log([topic, payload].join(": "))
			  //这里可以将 topic 转成 msgid 传给上一级代码
			  //client.end()
		  })
		  client.on('connect', function () {
			  //连接成功了,这里可以进行登陆操作
			  console.log('connect')
			  client.sendMessage(3001,"{\"userName\":\"xxxxx\", \"passWord\":\"123456\"}")
		  })
		  client.on('reconnect', function () {
			  //当一个重连开始
		  })
		  client.on('close', function () {
			  console.log('close')
		  })
		  client.on('error', function () {
			  console.log('error')
			  console.log(arguments)
		  })
	  }
  };
  
  module.exports = cfg;

想问,客户端用Cocos Creator开发的,用了umdMqtt来通信,web端与原生端都可以用,就是运行到微信小游戏时会出现问题。在小游戏模拟器会连不服务器,小游戏真机会出现错误黑屏。怎么解决问题呢?

能不能给一个详细一点的例子和整理好的文件,现在感觉讲得太乱,不知道要用哪些文件,下载下来后,总是出现问题。 用umdMqtt.js这个文件又有回复说在小程序里面有问题,又不知道是不是用MQTT.js这个文件就可以,最上面说用paho.mqtt.javascript这个文件,然后又没有使用说明,结合回复里面的mqant.js这个文件又出现发送消息可以,服务器返回客户端消息客户端解析报错,然后在https://github.com/eclipse/paho.mqtt.javascript这里面下载的paho.mqtt.javascript文件和回复里面的同名文件的内容又不一样,从https://github.com/eclipse/paho.mqtt.javascript下载的最新文件可以连接上服务器,但发送消息都发送不了,服务器报错。感觉真的好乱。。。。。。

我上传了一下我改造的creator可以用的库 https://github.com/liangdas/mqantserver/tree/master/clientlib

@liangdas 你这个修改在网页上测试时可以通过,但是在微信上真机上测试,连接没有任何反应.用cocos creator.代码如下 const {ccclass, property} = cc._decorator; var Mqant=require("./Lib/mqant"); @ccclass export default class NewClass extends cc.Component { @property(cc.Node) connectButton: cc.Node = null; @property(cc.Node) sendButton: cc.Node = null; private mqant:any = null; start () { this.connectButton.on(cc.Node.EventType.TOUCH_END,this.startConnect,this); this.sendButton.on(cc.Node.EventType.TOUCH_END,this.onSend,this); } private startConnect(e:cc.Event.EventTouch):void { console.log(“start to connect wc…”);

    this.mqant = new Mqant()
    this.mqant.init({
		host: "192.168.0.36",
		port: 3653,
		client_id: "111",
		useSSL:false,
	    connect:function() {
			console.log("onConnected");
		},
		onConnectionLost:function(reason) {
			console.log(reason)
		}
		});
} 

private onSend() { var topic = “Login/HD_Login”; var data = { userName : “jimhy”, passWord : “aabb” } this.mqant.request(topic, data, function(destinationName,data) { var message=JSON.parse(data.payloadString) if(message.Error!="") { console.error(message.Error); return; } console.log(message.Result); }); } }

谢谢楼主,非常感谢这么快就回复了。 确认过眼神。。。微信OK了o( ̄︶ ̄)o

想问下,如果用了https://github.com/liangdas/mqantserver/tree/master/clientlib中的paho-mqtt.js能用于Cocos Creator的原生平台么,还是只能用于微信小游戏?

@Leo501 cocos creatror环境应该都能用

@liangdas 楼主,有没有 cocos creator ts 版的实例或者demo啊, 卡在这里好久,微信小游戏项目,网页里可以跑,但是发布到真机到时候就不行里

回到顶部