八、网页版消息推送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 ...
随机推荐
- HTML5关于上传API的一些使用(中)
上一次写了关于HTML的上传API,XMLHttpRequest2.0的上传方式,以及HTML5中上传之前本地的预览,包括对于图片以及部分信息的预 览.这次我们就讲下HTML5中关于上传的一些各种个性 ...
- I2C和SPI
I2C(Inter-Integrated Circuit)总线 两线式串行总线,用于连接微控制器及其外围设备.是微电子通信控制领域广泛采用的一种总线标准.它是同步通信的一种特殊形式,具有接口线少,控制 ...
- 原生sqlServer数据库连接
package tj.test.demo; import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Sta ...
- 关于Aspose强大的应用--EXECL
protected void btnConfirg_Click(object sender, EventArgs e) { genExcel(); } //设置内容文字色 表中有一个蓝色文字列和绿色文 ...
- Dirichlet Distribution
Beta分布: 二项式分布(Binomial distribution): 多项式分布: Beta分布: Beta分布是二项式分布的共轭先验(conjugate prior) Dirichlet Di ...
- 转载 Python导入模块的几种姿势
作为一名新手Python程序员,你首先需要学习的内容之一就是如何导入模块或包.但是我注意到,那些许多年来不时使用Python的人并不是都知道Python的导入机制其实非常灵活.在本文中,我们将探讨以下 ...
- Android开发人员必备的10个开发工具
工欲善其事,必先利其器,Android SDK 本身包含很多帮助开发人员设计.开发.测试和发布 Android 应用的工具,在本文中,我们将讨论 10 个最常用的工具. 1.Eclipse ADT E ...
- 剑指 offer set 17 判断一棵树是否是平衡树
总结 1. 书上给出一个简洁代码, 说是会重复遍历. 2. 框架相同, 可以写出下面的代码 class Solution { public: bool ans; int getHeight(TreeN ...
- awk sed grep 详解
Linux的文本处理工具浅谈 awk [功能说明] 用于文本处理的语言(取行,过滤),支持正则 NR代表行数,$n取某一列,$NF最后一列 NR==20,NR==30 从20行到30行 FS竖着切,列 ...
- Jquery判断某个标签 Id是否存在
query判断某个标签 Id是否存在, 如果是下面的 jQuery 代码判断一个对象是否存在,是不能用的 if($("#id")){}else{} 因为 $(“#id”) 不管对象 ...