八、网页版消息推送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 ...
随机推荐
- 微信小程序 - Util工具类
/utils/utils.js 已经扩展到App对象中,Page方法中直接使用 app.util.method(...) 调用. 1. 扩展String.replaceAll JS默认值提供re ...
- python3制作捧腹网段子页爬虫
0x01 春节闲着没事(是有多闲),就写了个简单的程序,来爬点笑话看,顺带记录下写程序的过程.第一次接触爬虫是看了这么一个帖子,一个逗逼,爬取煎蛋网上妹子的照片,简直不要太方便.于是乎就自己照猫画虎, ...
- jQuery分页小插件
源码如下: $.fn.pager = function (pagerInfo) { var recordCount = this.size(); if (recordCount <= pager ...
- [android] AndroidManifest.xml - 【 manifest -> permission】
在 API Level 1 时被引入 语法: <permission android:description="string resource" android:icon= ...
- 第二百五十节,Bootstrap项目实战--响应式导航
Bootstrap项目实战--响应式导航 学习要点: 1.响应式导航 一.响应式导航 基本导航组件+响应式 第一步,声明导航区域,设置导航默认样式,设置导航条固定在顶部navbar样式class类,写 ...
- freemarker1 一些内建函数和用法
${" green mouse"?cap_first} --> Green mouse //字符串中的第一个单词的首字母大写 ${"ABCDF" ...
- 数据驱动ddt
在设计用例的时候,有些用例操作过程是一样的,只是参数数据输入的不同,如果用例重复的去写操作过程会增加代码量,对于这种多组数据的测试用例,可以使用数据驱动设计模式,一组数据对应一个测试用例,用例自动加载 ...
- 剑指 offer set 18 数组中只出现一次的数字
题目描述: 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字 思路 1. 思路是先将数组分成两个部分, 两个单个数字分别分到两部分中, 并且数组中其他数字都成 ...
- 2、Android自己的下拉刷新SwipeRefreshLayout--样式2
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/ ...
- string整理
/* scanf是c语言的,而string是c++的类,所以不能使用scanf直接读入 */ #include<cstdio> #include<string>//注意支持库 ...