八、网页版消息推送SDK-WebSockets
介绍
由于项目组需求、最近在研究消息推送服务平台、结合业务和使用场景分析最终选择的是 Mosquitto 消息服务器、 Mosquitto 服务器的安装、配置、集群搭建 我就不在这多说了、有兴趣的可以看我对 Mosquitto 学习记录的前七篇文章。 今天在这主要介绍网页版 WebSockets 实现消息的推送。
1: 本 SDK 的开发 是基于 eclipse.paha.javaScript 包来实现的。
2: 引入开发需要的JavaScript
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.js" type="text/javascript"></script>
注: 此文件可以到官网下载、 地址:https://raw.githubusercontent.com/eclipse/paho.mqtt.javascript/master/src/mqttws31.js
3: 封装实现 js - sdk
var websocket = function(config) {
this.host = config.host;// ip
this.port = config.port;// 端口
this.useTLS = config.useTLS; // 是否启用TLS 安全连接
this.topic = config.topic;// 订阅Topic
this.userName = config.userName; // 连接用户名
this.password = config.password; // 密码
this.cleansession = config.cleansession; //false : 表示每次相同的身份登陆: true : 表示每次以新身份登陆
this.reconnectTimeout = 5000; // 重试超时时间
this.clientId = config.clientId; // 客户端名称
var mqttClient;
this.connect = function MQTTconnect() {
mqttClient = new Paho.MQTT.Client(this.host, this.port, clientId);
var options = {
timeout : 10,
useSSL : this.useTLS,
cleanSession : this.cleansession,
onSuccess : onConnect,
onFailure : function(message) {
faildMssge(message.errorMessage, "Retrying",
fialdMessageCallback)
setTimeout(MQTTconnect, this.reconnectTimeout);
}
};
mqttClient.onConnectionLost = onConnectionLost;
mqttClient.onMessageArrived = onMessageArrived;
if (this.userName != null) {
options.userName = this.userName;
options.password = this.password;
}
console.log("Host=" + host + ", port=" + port + " TLS = " + useTLS
+ " username=" + userName + " password=" + password);
mqttClient.connect(options);
}
function onConnect() {
mqttClient.subscribe(topic, {
qos : 0
});
}
function onConnectionLost(response) {
setTimeout(MQTTconnect, this.reconnectTimeout);
faildMssge("connection lost: " + responseObject.errorMessage,
". Reconnecting", fialdMessageCallback)
}
;
function onMessageArrived(message) {
var topic = message.destinationName;
var payload = message.payloadString;
callback(topic, payload, messageCallback);
}
;
function callback(topic, payload, messageCallback) {
messageCallback(topic, payload);
}
function faildMssge(errorMessage, type, fialdMessageCallback) {
fialdMessageCallback(errorMessage, type);
}
this.sendMessage = function sendMessage(topic, message) {
var message = new Paho.MQTT.Message(message);
message.destinationName = topic;
message.qos = 0;
mqttClient.send(message);
}
}
4: 使用说明
// Create a config
config = {
host : '172.16.192.103',
port : 9001,
topic : '#',
useTLS : false,
userName : null,
password : null,
cleansession : true,
clientId : 'clientId'
}
//Create a client instance
var client = new websocket(config);
// connect the client
client.connect();
//send message
client.sendMessage(topic, message);
// subscribe topic message callback function
function messageCallback(topic, payload) {
// 业务逻辑处理
}
//error message callback function
function fialdMessageCallback(errorMessage, type) {
//业务逻辑处理
}
到这网页版消息推送基本功能已经实现: 如想要完整的 web 应用实例请到如下地址下载:https://github.com/yuelicn/mqtt-client.git
本人 JavaScript 水平有限、如有不妥的地方欢迎指正 谢谢!
八、网页版消息推送SDK-WebSockets的更多相关文章
- 百度消息推送SDK探究(并附上最简推送Demo)
上一篇<百度消息推送REST API探究>中了解了如何使用REST API推送消息,这一篇我们来看一下百度消息推送为我们提供的SDK. 帮助文档:http://developer.baid ...
- Android消息推送 SDK 集成指南
使用提示 本文是 Android SDK 标准的集成指南文档. 匹配的 SDK 版本为:r1.8.0及以后版本. 本文随SDK压缩包分发.在你看到本文时,可能当前的版本与本文已经不是很适配.所以建议关 ...
- 基于APNs最新HTTP/2接口实现iOS的高性能消息推送(服务端篇)
1.前言 本文要分享的消息推送指的是当iOS端APP被关闭或者处于后台时,还能收到消息/信息/指令的能力. 这种在APP处于后台或关闭情况下的消息推送能力,通常在以下场景下非常有用: 1)IM即时通讯 ...
- 为友盟消息推送开发的PHP SDK(composer版):可以按省发Android push
一直以来APP希望按省市县推送Android push,只能自己分析用户经纬度,打tag发送. 现在终于有服务商提供了. 友盟消息推送 可以“按省推送”,很方便. 我为友盟做了PHP SDK(comp ...
- Android P正式版即将到来:后台应用保活、消息推送的真正噩梦
1.前言 对于广大Android开发者来说,Android O(即Android 8.0)还没玩热,Andriod P(即Andriod 9.0)又要来了. 下图上谷歌官方公布的Android P ...
- 友盟消息推送api、python sdk问题、测试demo代码
一,友盟消息推送python服务端sdk地址和文档地址 1.sdk地址:http://dev.umeng.com/system/resources/W1siZiIsIjIwMTYvMDgvMTkvMT ...
- 使用WeCloud消息推送接口发送消息NodeJs版
WeCloud是一家初创公司的产品,眼下主要在做Android和IOS消息推送这块.他们提供了用于向设备发送消息的协议,详细协议内容见消息推送协议. 这篇文章将使用NodeJs基于这个推送协议完毕向A ...
- How Javascript works (Javascript工作原理) (九) 网页消息推送通知机制
个人总结: 1.介绍了网页消息推送通知机制 全文地址:https://github.com/Troland/how-javascript-works 这是 JavaScript 工作原理的第九章. 现 ...
- iOS远程消息推送自我整理版
@interface AppDelegate () <UIApplicationDelegate> @end @implementation AppDelegate - (BOOL)app ...
随机推荐
- GIMP 使用
在更改uboot启动logo的时候,需要P图,使用了linux的gimp.本文记录如何更改图片大小以及居中显示. 设置画布大小 在图片中右键 image -> Canvas Size 图片居中 ...
- HBase和ZooKeeper
HBase和ZooKeeper HBase内置有ZooKeeper,也可以使用外部ZooKeeper. 让HBase使用一个已有的不被HBase托管的Zookeep集群,需要设置 conf/hbase ...
- 视图矩阵的推导-opengl应用
把物体从世界坐标系转化到视点坐标系的矩阵称为视图矩阵. 下面我们先看下opengl视图矩阵的推导过程: 假设视点或camera的局部坐标系为UVN,UVN分别指向右方.上方和后方从而构成右手坐标系,视 ...
- 【BZOJ】1050: [HAOI2006]旅行comf(暴力+并查集)
http://www.lydsy.com/JudgeOnline/problem.php?id=1050 表示被暴力吓到了orz 我竟然想不到...我竟然还想到分数规划,,但是不可做...然后又想到最 ...
- hdu 1086:You can Solve a Geometry Problem too(计算几何,判断两线段相交,水题)
You can Solve a Geometry Problem too Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/3 ...
- Linux kernel parameter command line设置
现在CPU2核以上比较普遍了,平时用linux上上网可能用不着双核甚至4核,大部分发行版内核都启用了CPU_HOTPLUG,到/sys/devices/system/cpu下可以看到文件夹cpu0.c ...
- [转]Oracle dbms_random函数用法快速生成多条测试数据
Java 随机生成中文姓名,手机号,邮编,住址:http://blog.csdn.net/xiaokui_wingfly/article/details/45913885 Java 批量随机生成身份证 ...
- 【转】关于OnPaint的工作机制
转载出处:http://blog.csdn.net/foreverhuylee/article/details/21889025 用了两年的VC++,其实对OnPaint的工作原理一直都是一知半解.这 ...
- C++之运行时类型识别RTTI
C++ Code 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 ...
- VC中的学习点滴
1. __stdcall 和 __cdecl __cdecl 是C Declaration的缩写(declaration,声明),表示C语言默认的函数调用方法:所有参数从右到左依次入栈,由调用者负责 ...