突破极限–如何使用AeroGear Unified Push for Java EE和Node.js

在2014年底的AeroGear队宣布红帽的JBoss统一推送服务器的可用性xPaaS 。 让我们仔细看看!

总览

统一推送服务器允许开发人员将本地推送消息发送到Apple的推送通知服务(APNS)和Google的云消息传递(GCM)。 它具有内置的管理控制台,使开发人员可以轻松地为任何移动开发环境创建和管理与应用程序的推送相关的方面。 包括客户端SDK(iOS,Android和Cordova)以及具有可用Java发送器库的基于REST的发送器服务。 下图显示了Unified Push Server如何使应用程序向Apple的Push Notification Service(APNS)和Google的Cloud Messaging(GCM)发送本机推送消息:

images_solutions_unifiedpush_overview-image-1

建筑

xPaaS产品部署在托管EAP容器中,而服务器本身基于标准的Java EE API,例如:

  • JAX-RS
  • EJB
  • CDI
  • JPA

另一个关键组件是Keycloak ,用于用户管理和身份验证。 Unified Push Server的核心是其公共RESTful端点 。 这些服务是所有移动设备以及第三方业务应用程序的条目,当它们想要发布要发送到已在服务器上注册的移动设备的推送通知时。

后端整合

基于JAX-RS标准,使与任何后端平台的集成变得非常容易。 它只需要说HTTP ...

Java EE

该项目具有Java库 ,可从任何基于Java的后端发送推送通知请求。 流利的构建器API用于设置与所需的Unified Push Server的集成,借助CDI,我们可以将其提取到一个非常简单的工厂中:

@Produces
public PushSender setup() {PushSender defaultPushSender = DefaultPushSender.withRootServerURL("http://localhost:8080/ag-push").pushApplicationId("c7fc6525-5506-4ca9-9cf1-55cc261ddb9c").masterSecret("8b2f43a9-23c8-44fe-bee9-d6b0af9e316b").build();
}

接下来,我们需要将“ PushSender”注入到Java类中,该类负责向统一推送服务器发送推送请求:

@Inject
private PushSender sender;
...
public void sendPushNotificationRequest() {...UnifiedMessage unifiedMessage....;sender.send(unifiedMessage);
}

UnifiedMessage的API也利用了构建器模式:

UnifiedMessage unifiedMessage = UnifiedMessage.withMessage().alert("Hello from Java Sender API!").sound("default").userData("foo-key", "foo-value")....build();

Node.js

成为稳定的服务器并不会将集成限制到Java EE等传统平台。 AeroGear还具有Node.js库 。 下面是一个简短的示例,说明如何从基于Node.js的后端发送推送通知:

// setup the integration with the desired Unified Push Server
var agSender = require( "unifiedpush-node-sender" ),settings = {url: "http://localhost:8080/ag-push",applicationId: "c7fc6525-5506-4ca9-9cf1-55cc261ddb9c",masterSecret: "8b2f43a9-23c8-44fe-bee9-d6b0af9e316b"};// build the push notification payload:
message = {alert: "Hello from Node.js Sender API!",sound: "default",userData: {foo-key: "foo-value"}
};// send it to the server:
agSender.Sender( settings ).send( message, options ).on( "success", function( response ) {console.log( "success called", response );
});

下一步是什么 ?

xPaaS上的Unified Push Server目前支持Android和iOS,但AeroGear团队正在寻求为更多移动平台增强服务。 社区项目当前支持以下平台:

  • 安卓系统
  • Chrome打包应用
  • 的iOS
  • SimplePush / Firefox操作系统
  • 视窗

计划增加对Safari浏览器和Amazon的设备消息传递(ADM)的支持 。

入门要查看运行中的Unified Push Server,请查看以下视频:

xPaaS版本带有针对Android,iOS和Apache Cordova客户端的不同演示,以及基于Java EE的后端演示。 您可以在此处找到下载内容 。

可以在Unified Push主页上找到更多信息。

您可以通过IRC或电子邮件与AeroGer团队联系。

玩得开心,享受!

翻译自: https://www.javacodegeeks.com/2015/01/pushing-the-limits-howto-use-aerogear-unified-push-for-java-ee-and-node-js.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/338833.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 运行os文件路径_Java获取文件路径的几种方式

关于绝对路径和相对路径: 绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:C:xyz est.txt 代表了test.txt文件的绝对路径。http://www.sun.com/index.htm也代表了一个URL绝对路径。相 对路径:相对与某…

mysql 分词搜索_实战 | canal 实现Mysql到Elasticsearch实时增量同步

题记关系型数据库Mysql/Oracle增量同步Elasticsearch是持续关注的问题,也是社区、QQ群等讨论最多的问题之一。 问题包含但不限于: 1、Mysql如何同步到Elasticsearch? 2、Logstash、kafka_connector、canal选型有什么不同,如何取舍&#xff1…

C memset 踩坑

一、前言memset 作为对内存初始化的函数,还是有不少坑和误区的,今天就来对这个函数作一个总结。二、函数作用最简单的调用就是将一个数组清零,代码如下:const int maxn 1024; int a[maxn]; memset(a, 0, sizeof(a)); // a[0]a[1…

eap和psk_针对WildFly和EAP运行Java Mission Control和Flight Recorder

eap和pskJava Mission Control (JMC)使您可以监视和管理Java应用程序,而无需引入通常与这些类型的工具相关的性能开销。 它使用为正常的JVM动态优化而收集的数据,从而形成了一种非常轻量级的方法来观察和分析应用程序代码中的问题…

java与html关联_java-如何在HTML文件中搜索某些标签?

我在Java中有一个小问题.操作方法:我想在HTML文件中搜索标签href和src,然后获取与该标签关联的URL.最好的方法是什么?谢谢您的帮助.最好的祝福.解决方法:这是我用来完全完成您想要做的事情的代码,但首先让我给您一些提示.如果您在Java Swing环境中,请确保…

python中history()_keras中的History对象用法

keras中的fit_generator和fit函数均返回History对象,那么History怎么用呢?事实上History对象已经记录了运行输出。在了解之前,我们甚至自己定义回调函数记录损失和准确率等。相关keras源码位于网址:class History(Callback):"…

C语言合法标识符

Problem Description输入一个字符串,判断其是否是C的合法标识符。Input输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据,每行是一个长度不超过50的字符串。Output对于每组输入数据&#…

线程魔术技巧:使用Java线程可以做的5件事

Java线程最鲜为人知的事实和用例是什么? 有些人喜欢爬山,有些人喜欢跳伞。 我,我喜欢Java。 我喜欢它的一件事是,您永不停止学习。 您每天使用的工具通常可以为您带来全新的面貌,以及您还没有机会看到的方法和有趣的用…

python正则表达式面试_Python面试 Re-正则表达式

1.python正则表达式中匹配(match)和查找(search)的区别答:正则表达式中match和search的方法比较相似相同点:都是在一个字符串s中寻找pat子字符串,如果能找到,就返回一个Match对象,如果找不到,就返回None。不…

java webview框架_java - Android WebView 无法正常显示网页图表

Android客户端中混搭HTML页面,会出现虽然HTML内容载入完成,标题也正常显示,但是整个网页需要等到近5秒(甚至更多)时间才会显示出来。研究了很久,搜遍了国外很多网站,也看过PhoneGap的代码,一直无解。 …

每日干货丨C语言数组知识点总结

一.一维数组1. 初始化方法第一种:完全初始化。依次赋值如:a[5] {2,3,4, 5, 6};a[] {1,2, 3, 4, 5, 6};第二种:不完全初始化。初始化式中的值从a[0]开始,依次向后赋值&a…

python isnumber_Python正课18 —— 基本数据类型 - 字符串类型

一:定义msg hello #本质:name str(任意形式内容)二.类型转换数据类型转换:str()可以将任意数据类型转换成字符串类型,例如# msg hello # msg str(hello)# print(type(msg))三:使用(内置方法)优先掌握:1.按索引取值…

微服务构架 esb总线_好的微服务架构=企业服务总线(ESB)的灭亡?

微服务构架 esb总线如今,似乎每个人都在谈论微服务。 您可以在数百篇文章和博客文章中读到很多有关该主题的文章,但是我建议的出发点是Martin Fowler的这篇文章 , 该文章引发了有关这种新建筑概念的大量讨论。 本文介绍了创建良好的微服务架构…

java8方法引用符合_Java8 方法引用和构造方法引用

如果不熟悉Java8新特性的小伙伴,初次看到函数式接口写出的代码可能会是一种懵逼的状态,我是谁,我在哪,我可能学了假的Java,(・∀・(・∀・(・∀・*),但是语言都是在进步的,就好比面向对象的语言…

C语言指南-数组之谜

前言在C语言中,数组和指针似乎总是“暧昧不清”,有时候很容易把它们混淆。本文就来理一理数组和指针之间到底有哪些异同。数组回顾在分析之前,我们不妨回顾一下数组的知识。数组是可以存储一个固定大小的相同类型元素的顺序集合。为了便于我们…

python生成uuid_咸鱼高赞回答:有什么相见恨晚的Python技巧,附赠python最新教程...

日常工作几乎离不python。一路走来,他积累了不少有用的技巧和tips,现在就将这些技巧分享给大家。这些技巧将根据其首字母按A-Z的顺序进行展示。Python相关学习资料获取方式:转发文章关注私信【Python】ALL OR ANYPython之所以成为这么一门受欢…

maven将第三方依赖_如何将商业第三方文物整合到您的Maven版本中

maven将第三方依赖根据ZeroTurnaround的RebelLabs最近进行的一项调查 ,Maven仍然是领先的Java构建平台。 根据RebelLabs,当前的市场份额分布是: Maven的64% 蚂蚁常春藤与16.5% Gradle与11% 但是&#x…

java用十字链表实现无向图_实验四:图的实现与应用

20162317袁逸灏 实验四:图的实现与应用实验内容用邻接矩阵十字链表实现无向图中的添加结点删除结点添加边删除边size()isEmpty()广度优先迭代器深度优先迭代器方法实验要求实验1:用邻接矩阵实现无向图(边和顶点都要保存),实现在包含添加和删除…

C语言指针变量的运算

前言指针变量也是可以进行运算的,如指针变量对其自身加上某个整数或减去某个整数,这在内存上体现为:相对这个指针向后偏移多少个单位或向前偏移了多少个单位,这里的单位与指针变量的类型有关。在32bit环境下,int类型占…

关于n对角矩阵数据结构_机器学习与线性代数 - 特殊矩阵

在线性代数中,有一些特殊的矩阵具有易于分析和操作的特性。它们的特征向量可能具有特定的特征值或特殊关系。还有一些方法可以将一个矩阵分解成这些“更简单”的矩阵。操作复杂性的降低提高了可伸缩性。然而,即使这些矩阵都是特殊的,它们也不…