介绍

  由于项目组需求、最近在研究消息推送服务平台、结合业务和使用场景分析最终选择的是 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的更多相关文章

  1. 百度消息推送SDK探究(并附上最简推送Demo)

    上一篇<百度消息推送REST API探究>中了解了如何使用REST API推送消息,这一篇我们来看一下百度消息推送为我们提供的SDK. 帮助文档:http://developer.baid ...

  2. Android消息推送 SDK 集成指南

    使用提示 本文是 Android SDK 标准的集成指南文档. 匹配的 SDK 版本为:r1.8.0及以后版本. 本文随SDK压缩包分发.在你看到本文时,可能当前的版本与本文已经不是很适配.所以建议关 ...

  3. 基于APNs最新HTTP/2接口实现iOS的高性能消息推送(服务端篇)

    1.前言 本文要分享的消息推送指的是当iOS端APP被关闭或者处于后台时,还能收到消息/信息/指令的能力. 这种在APP处于后台或关闭情况下的消息推送能力,通常在以下场景下非常有用: 1)IM即时通讯 ...

  4. 为友盟消息推送开发的PHP SDK(composer版):可以按省发Android push

    一直以来APP希望按省市县推送Android push,只能自己分析用户经纬度,打tag发送. 现在终于有服务商提供了. 友盟消息推送 可以“按省推送”,很方便. 我为友盟做了PHP SDK(comp ...

  5. Android P正式版即将到来:后台应用保活、消息推送的真正噩梦

    1.前言 对于广大Android开发者来说,Android O(即Android 8.0)还没玩热,Andriod P(即Andriod 9.0)又要来了.   下图上谷歌官方公布的Android P ...

  6. 友盟消息推送api、python sdk问题、测试demo代码

    一,友盟消息推送python服务端sdk地址和文档地址 1.sdk地址:http://dev.umeng.com/system/resources/W1siZiIsIjIwMTYvMDgvMTkvMT ...

  7. 使用WeCloud消息推送接口发送消息NodeJs版

    WeCloud是一家初创公司的产品,眼下主要在做Android和IOS消息推送这块.他们提供了用于向设备发送消息的协议,详细协议内容见消息推送协议. 这篇文章将使用NodeJs基于这个推送协议完毕向A ...

  8. How Javascript works (Javascript工作原理) (九) 网页消息推送通知机制

    个人总结: 1.介绍了网页消息推送通知机制 全文地址:https://github.com/Troland/how-javascript-works 这是 JavaScript 工作原理的第九章. 现 ...

  9. iOS远程消息推送自我整理版

    @interface AppDelegate () <UIApplicationDelegate> @end @implementation AppDelegate - (BOOL)app ...

随机推荐

  1. WCF服务三:svc文件详解

    在前面的文章中讲述过WCF服务的宿主程序主要包括:三种,在那篇文章中,简单的描述了如何把一个WCF服务寄宿到IIS上面,这篇文章中将具体讲述如何把一个WCF服务寄宿到IIS上面. 一.新建一个WCF服 ...

  2. Jquery仿IGoogle实现可拖动窗口

    google可谓是ajax的特效用的淋漓尽致,google suggest, google map,igoogle 可拖动窗口等等...今天要做一个网站的类似效果,与编程人生的站长沟通了一下,仿照iG ...

  3. 静态内部类定义在类中,任何方法外,用static定义

    静态内部类:(注意:前三种内部类与变量类似,所以可以对照参考变量) 静态内部类定义在类中,任何方法外,用static定义. 静态内部类只能访问外部类的静态成员. 生成(new)一个静态内部类不需要外部 ...

  4. 多媒体开发之rtp 打包发流--- 从h264中获取分辨率

    http://blog.csdn.net/DiegoTJ/article/details/5541877 http://www.cnblogs.com/lidabo/p/4482684.html 分辨 ...

  5. oracle oci 调用 1

    http://blog.163.com/earth_of_fire/blog/static/1368943200791211622278/(总结) http://blog.163.com/earth_ ...

  6. Effective C++ 条款26

    尽可能延后变量定义式的出现时间 我们知道定义一个对象的时候有一个不争的事实,那就是分配内存.假设是我们自己定义的对象.程序运行过程中会调用类的构造函数和析构函数. 我们打个例如,假设天下雨了,你带把雨 ...

  7. freemarker1 一些内建函数和用法

    ${"   green mouse"?cap_first} -->   Green mouse  //字符串中的第一个单词的首字母大写 ${"ABCDF" ...

  8. es6 javascript的class的静态方法、属性和实例属性

    http://blog.csdn.net/qq_30100043/article/details/53542966

  9. 使用cordova+Ionic+AngularJs进行Hybird App开发的环境搭建手冊

    一.所需工具 1,JDK:生成 2.安卓SDK开发环境 3,NodeJs:主要使用的还是npm 4,Python开发环境 5.VS 2012(2008,2015也能够,已亲測):安装这个主要是须要一些 ...

  10. C#------引用System.Data.Entity后DbContext依然无法继承解决方法

    解决方法: 需要在“引用”->“管理NuGet程序包”里面添加->“EntityFramework.dll”文件即可