八、网页版消息推送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 水平有限、如有不妥的地方欢迎指正 谢谢!

时间: 2024-11-14 01:22:42

八、网页版消息推送SDK-WebSockets的相关文章

Android开发笔记(一百零四)消息推送SDK

推送的集成 常用概念 推送:从服务器把消息实时发到客户端app上,这就是推送,推送可用于发送系统通知.发送推荐信息.发送聊天消息等等. 别名:用于给移动设备取个好记的名字,比如电脑有计算机名,可以把别名理解为开发者给移送设备起的外号.不过,多个移动设备可以起一样的别名,这几个设备就会同时收到发给该别名的消息. 标记:用于给移动设备打标签,可以理解为分类,比如超市里的泰国大米既可以打上"粮食制品"的标签,也可以打上"进口商品"的标签.服务器可以统一给某个种类的移动设备

微信通过网页版定时推送消息脚本

1.登录微信网页版 2.选择对应的联系人 3.打开Javascript console 4.输入脚本 脚本内容: setInterval(function(){ if(new Date().toLocaleString().indexOf('2017/11/13 下午2:25:00')===0) { $('.edit_area').html('test script'); $(".edit_area").trigger($.Event("keydown", { ke

Android消息推送 SDK 集成指南

使用提示 本文是 Android SDK 标准的集成指南文档. 匹配的 SDK 版本为:r1.8.0及以后版本. 本文随SDK压缩包分发.在你看到本文时,可能当前的版本与本文已经不是很适配.所以建议关注在线文档: 3 分钟快速 Demo(Android):如果您想要快速地测试.感受下极光推送的效果,请参考本文在几分钟内跑通Demo. 极光推送文档网站上,有极光推送相关的所有指南.API.教程等全部的文档.包括本文档的更新版本,都会及时地发布到该网站上. 极光推送问答网站:大家除了文档之外,还有问

网页端消息推送之推与拉

需求之缘由 用户A在网页段登陆,系统或其他用户的某些操作会导致在网页显示消息,用以提醒用户.实现方式大致有三种. 轮询拉取 建立长连接 HTTP长轮询 消息通知之发送方和处理方 发送方 系统发给A的"系统通知",可能对实时性要求没这么高 用户发给A的"聊天消息",有对实时性要求比较高,越实时越好 处理方 有服务对消息进行逻辑处理 有数据库对数据进行落地 有缓存对数据进行加速 方式之一_轮询拉取 轮询拉取,是最容易想到的实现方式: 发送方发送了消息,先入队列 网页端起

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

WeCloud是一家初创公司的产品,目前主要在做Android和IOS消息推送这块.他们提供了用于向设备发送消息的协议,具体协议内容见消息推送协议. 这篇文章将使用NodeJs基于这个推送协议完成向App用户推送消息的服务端SDK. 首先你需要注册一个帐号,然后系统会为你自动生成一个测试demo,你可以通过扫二维码或先下载到电脑的方式获得apk文件,再将其安装到自己的手机上之后就可以测试发送效果了,每个应用都会有对应的Appkey和Master Secret这两个属性,它是作为发送消息的凭证而存

友盟消息推送新版 SDK 为什么要支持多包名推送?

友盟消息推送 Android SDK 升级至 v 1.4.1 版本了!那问题来了,v 1.4.1 版本有什么新功能呢? “支持多包名推送”!新版 SDK 下载地址 开发者都知道,对于各种 Android 应用,特别是 Android 游戏而言,针对不同的渠道定制版本.使用不同的包名是运营中常见的一环,但是这样会导致后续使用消息推送时工作量过大,每个包都要单独推送,费时费力,还难以做到精准推送,效率低下……在不改变使用多包名的现状下,该如何提升消息推送效率? 友盟消息推送团队新推出的“多包名推送”

互联网产品消息推送设计策略(转)

在移动互联时代,消息推送越来越受到各个APP的重视,本文就以互金产品为例阐述消息推送的几个类别以及应用的场景方式.运营策略,希望对你有益. 在之前一文中,笔者概括性的介绍了通知功能是互金理财平台的一个基础但重要的功能.消息推送能将个人账户相关.平台相关内容送达终端用户,是为互联网产品一个重要的功能.在移动互联网时代,移动客户端出现寡头效应,消息推送愈发重要,而在互金产品中尤甚. 因此本文将开始重点阐述互金产品消息推送的类别.场景.方式和前后端推送设计策略以及运营策略. 1 定义 本文所指的"互金

友盟第三方消息推送使用

1.首先你得有一个友盟的账号友盟官网 2.注册了账号之后要注册应用 这里要注意的信息 3.下载友盟消息推送sdk友盟推送sdk下载地址 4.准备工作都做好之后可以进行环境配置了 打开File→Project Structure 确认之后,就将PushSDK依赖到你的项目中了 它里面的东西你都可以调用了,它里面配置好了各种权限等等 可以省去很多步骤 官方提示需要注意的东西: 在自己项目的build.gradle里面一定要配置applicationId,PushSDK下的AndroidManifes

友盟(四)消息推送

一.添加应用 http://message.umeng.com 选择进行数据统计的应用,获得集成推送的相关信息如下: 二.集成 1.快速集成 1)下载友盟消息推送sdk com.umeng.message.lib.jar 添加到项目中 2)配置权限 <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.perm