介绍

  由于项目组需求、最近在研究消息推送服务平台、结合业务和使用场景分析最终选择的是 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. node.js之web开发 koa入门

    用Node.js开发Web服务器端,有几个显著的优势: 速度快,非常快!这得益于Node.js天生是异步的. 常见的Web框架包括:Express,Sails.js,koa,Meteor,DerbyJ ...

  2. TensorFlow基础笔记(5) VGGnet_test

    参考 http://blog.csdn.net/jsond/article/details/72667829 资源: 1.相关的vgg模型下载网址 http://www.vlfeat.org/matc ...

  3. before伪类的超有用应用技巧——水平菜单竖线分隔符

    方法一.li前面加before伪类 <!doctype html> <html dir="ltr" lang="zh-CN"> < ...

  4. cf490 C. Hacking Cypher(无语)

    http://codeforces.com/contest/490/problem/C 表示我考场上犯逗.. 这个拆成霍纳边乘边mod即可.. 为毛我考场胡思乱想? #include <cstd ...

  5. jquery ajax 的用法

    jquery的ajax请求的主要参数 beforeSend:发送ajax请求之前 success:发送ajax请求成功 error:发送ajax请求错误,通常是网络失去连接.服务器出错.后台方法错误等 ...

  6. jboss eap 6.4 部署 从weblogic迁移

    从weblogic10.3像jboss 6.4项目迁移,遇到的一些问题: 因为使用weblogic可以自定义公共的war包库,在使用jboss中,也采取项目依赖公共库的方式: 1.jboss中使用公共 ...

  7. [转]C# 超高速高性能写日志 代码开源

      1.需求 需求很简单,就是在C#开发中高速写日志.比如在高并发,高流量的地方需要写日志.我们知道程序在操作磁盘时是比较耗时的,所以我们把日志写到磁盘上会有一定的时间耗在上面,这些并不是我们想看到的 ...

  8. sql server函数(isnull,charindex,cast,自定义函数)

    SELECT charindex( CAST ( dbo.ufn_IsNullOrEmpty ('109722A3-622D-4FD4-A060-0287C933A89E', a.OUID) AS V ...

  9. Android之Handler与AsyncTask的区别

    1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可 ...

  10. Windows电脑键盘快捷键大全【最全的快捷键】

    Windows电脑键盘快捷键大全[最全的快捷键] 一.常见用法: F1显示当前程序或者windows的帮助内容. F2当你选中一个文件的话,这意味着“重命名” F3当你在桌面上的时候是打开“查找:所有 ...