导航:首页 > 编程语言 > java实时推送

java实时推送

发布时间:2021-04-21 14:58:59

java服务器推送消息给android

几种常见的解决方案实现原理
1)轮询(Pull)方式:客户端定时向服务器发送询问消息,一旦服务器有变化则立即同步消息。

2)SMS(Push)方式:通过拦截SMS消息并且解析消息内容来了解服务器的命令,但这种方式一般用户在经济上很难承受。

3)持久连接(Push)方式:客户端和服务器之间建立长久连接,这样就可以实现消息的及时行和实时性。

3、消息推送解决方案概述

A、C2DM云端推送方案

在Android手机平台上,Google提供了C2DM(Cloudto Device Messaging)服务。Android
Cloud to Device Messaging (C2DM)是一个用来帮助开发者从服务器向Android应用程序发送数据的服务。该服务提供了一个简单的、轻量级的机制,允许服务器可以通知移动应用程序直接与服务器进行通信,以便于从服务器获取应用程序更新和用户数据。

该方案存在的主要问题是C2DM需要依赖于Google官方提供的C2DM服务器,由于国内的网络环境,这个服务经常不可用。

B、MQTT协议实现Android推送

采用MQTT协议实现Android推送功能也是一种解决方案。MQTT是一个轻量级的消息发布/订阅协议,它是实现基于手机客户端的消息推送服务器的理想解决方案。

wmqtt.jar
是IBM提供的MQTT协议的实现。我们可以从这里(https://github.com/toku/AndroidPushNotificationsDemo)下载该项目的实例代码,并且可以找到一个采用PHP书写的服务器端实现(https://github.com/toku/PhpMQTTClient)。

C、RSMB实现推送功能

Really Small Message Broker (RSMB)
,是一个简单的MQTT代理,同样由IBM提供,其查看地址是:http://www.alphaworks.ibm.com/tech/rsmb。缺省打开1883端口,应用程序当中,它负责接收来自服务器的消息并将其转发给指定的移动设备。SAM是一个针对MQTT写的PHP库。我们可以从这个http://pecl.php.net/package/sam/download/0.2.0地址下载它.

D、XMPP协议实现Android推送

Google官方的C2DM服务器底层也是采用XMPP协议进行的封装。XMPP(可扩展通讯和表示协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线探测。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息。

androidpn是一个基于XMPP协议的java开源Android push notification实现。它包含了完整的客户端和服务器端。但也存在一些不足之处:

1)
比如时间过长时,就再也收不到推送的信息了。

2)性能上也不够稳定。

3)如果将消息从服务器上推送出去,就不再管理了,不管消息是否成功到达客户端手机上。

如果我们要使用androidpn,则还需要做大量的工作,需要理解XMPP协议、理解Androidpn的实现机制,需要调试内部存在的BUG。

❷ java消息推送,一个实时数据的web显示该怎么做

javaweb消息实时推送可以使用GoEasy平台。

操作如下:

  1. 到goeasy官网上注册一个账号,并创建一个应用,应用创建好后系统会默认为它生成两个key: publish key和subscribe key。

  2. 前台实时订阅及接收:需要引入goeasy.js,然后调用goeasy的subscribe方法订阅一个channel即可,订阅时无论是用publish key还是subscribe key都可以。通过subscribe的参数 onMessage的回调函数可以实时接收到消息。

  3. 前台实时推送:需要引入goeasy.js(如果该页面已经引入了可不在引入),然后调用goeasy的publish方法向已订阅的channel上推送消息即可,推送时只能用publish key。

  4. 后台实时推送:调用GoEasy Restful API, 用post方式访问http://goeasy.io/goeasy/publish, 同时还需要带上三个必要参数:

    appkey: publish key

    channel: 你订阅了的channel

    content: 推送内容

  5. GoEasy的实现原理很简单,就是推送消息的一端只负责推送,而需要接收的页面需要预先订阅。订阅什么呢?订阅channel。往 某个channel上推送消息,客户端就订阅相同的channel,这样就可以确保准确接收。通过channel我们可以自己指定哪些页面或哪些用户可以 接收到从这个channel上推送出来的消息。

❸ java做消息推送

ajax和多线程控制

❹ 求教java长连接实现信息实时推送功能

1、网站间的实时推送可采用webservice接口的方式,网站前后台都能调用
2、客户端和服务器之间的推送。可以在服务端开个监听服务(开个端口),客户端业务来了的时候,发送请求去服务端,服务端处理业务,返回处理结果给客户端。
数据传输报文格式多种多样,比如xml,json等

❺ java实现实时订单推送需要用到什么技术

1:支付技术,订抄单需要支付
2:流程,订单系统肯定从下单到支付再到送货等一系列需要走流程
3:定位技术,订单需要地理定位,帮助送货员准确送货到买家
4:消息技术,在订单走到任何环节都需要消息及时反馈
5:搜索技术,买家会在系统搜索满意的物品

❻ 如何实现java http长连接推送数据

通过轮询来实现长连接
轮询:隔一段时间访问服务器,服务器不管有没有新消息都立刻返回。
http长连接实现代码:
客户端:
package houlei.csdn.keepalive;

import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.concurrent.ConcurrentHashMap;

/**
* C/S架构的客户端对象,持有该对象,可以随时向服务端发送消息。
* <p>
* 创建时间:2010-7-18 上午12:17:25
* @author HouLei
* @since 1.0
*/
public class Client {

/**
* 处理服务端发回的对象,可实现该接口。
*/
public static interface ObjectAction{
void doAction(Object obj,Client client);
}
public static final class DefaultObjectAction implements ObjectAction{
public void doAction(Object obj,Client client) {
System.out.println("处理:\t"+obj.toString());//诊断程序是否正常
}
}
public static void main(String[] args) throws UnknownHostException, IOException {
String serverIp = "127.0.0.1";
int port = 65432;
Client client = new Client(serverIp,port);
client.start();
}

private String serverIp;
private int port;
private Socket socket;
private boolean running=false;
private long lastSendTime;
private ConcurrentHashMap<Class, ObjectAction> actionMapping = new ConcurrentHashMap<Class,ObjectAction>();

public Client(String serverIp, int port) {
this.serverIp=serverIp;this.port=port;
}

public void start() throws UnknownHostException, IOException {
if(running)return;
socket = new Socket(serverIp,port);
System.out.println("本地端口:"+socket.getLocalPort());
lastSendTime=System.currentTimeMillis();
running=true;
new Thread(new KeepAliveWatchDog()).start();
new Thread(new ReceiveWatchDog()).start();
}

public void stop(){
if(running)running=false;
}

/**
* 添加接收对象的处理对象。
* @param cls 待处理的对象,其所属的类。
* @param action 处理过程对象。
*/
public void addActionMap(Class<Object> cls,ObjectAction action){
actionMapping.put(cls, action);
}

public void sendObject(Object obj) throws IOException {
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
oos.writeObject(obj);
System.out.println("发送:\t"+obj);
oos.flush();
}

class KeepAliveWatchDog implements Runnable{
long checkDelay = 10;
long keepAliveDelay = 2000;
public void run() {
while(running){
if(System.currentTimeMillis()-lastSendTime>keepAliveDelay){
try {
Client.this.sendObject(new KeepAlive());
} catch (IOException e) {
e.printStackTrace();
Client.this.stop();
}
lastSendTime = System.currentTimeMillis();

❼ java消息推送,一个实时数据的web显示该怎么做

javaweb消息实时推送可以使用GoEasy平台。

操作如下:

  1. 到官网上注册一个账号,并创建一个应用,应用创建好后系统会默认为它生成两个key: publish key和subscribe key。

  2. 前台实时订阅及接收:需要引入goeasy.js,然后调用goeasy的subscribe方法订阅一个channel即可,订阅时无论是用publish key还是subscribe key都可以。通过subscribe的参数 onMessage的回调函数可以实时接收到消息。

  3. 前台实时推送:需要引入goeasy.js(如果该页面已经引入了可不在引入),然后调用goeasy的publish方法向已订阅的channel上推送消息即可,推送时只能用publish key。

  4. 后台实时推送:调用GoEasy Restful API, 用post方式访问http://goeasy.io/goeasy/publish, 同时还需要带上三个必要参数:

    appkey: publish key

    channel: 你订阅了的channel

    content: 推送内容

  5. GoEasy的实现原理很简单,就是推送消息的一端只负责推送,而需要接收的页面需要预先订阅。订阅什么呢?订阅channel。往 某个channel上推送消息,客户端就订阅相同的channel,这样就可以确保准确接收。通过channel我们可以自己指定哪些页面或哪些用户可以 接收到从这个channel上推送出来的消息。

❽ java怎么用websocket写一个页面上的实时推送

目前要实现消息实时推送,有两种方法,一种是ajax轮询,由客户端不停地请求服务器端,查询有没有新消息,然后再由服务器返回结果;另外一种就是long poll,通过一次请求,询问服务器有没有新消息更新,如果没有新消息时,会保持长连接,就一直不返回Response给客户端。直到有消息才返回,返回完之后,客户端再次建立连接,周而复始。这两种都是单向链接,需要被动的请求服务器,而不是由服务器自动发给客户端。
从上面可以看出其实这两种方式,都是在不断地建立HTTP连接,然后等待服务端处理,可以体现HTTP协议的另外一个特点,被动性。

❾ java web 怎么实现新订单 及时推送给商家

是问抄“及时推送”如何实现吧?简单来说就是一个技术,长轮询,服务端接收到http请求后,既不响应也不关闭,而是hold住,期间不停地后台查询是否有新的数据,有数据就返回,没有就继续hold。名字别看叫“推送”,其实质还是一个自客户端发往服务端的请求,毕竟http是单向的没法反过来

❿ java消息推送

如果只是弹出信息的那种UI的话,你应该搞得定
而如果是类似App那样弹出信息的功能的回话,web搞不答定,得App才行。开发App可以是Android的也可以是iOS的。如果是iOS的话,可以通过苹果的消息推送服务进行。而如果用Android的话,Google自己也有消息推送服务(貌似是Android 4.0以后才有),国内的话,平台就多了,有各大厂商自己的推送服务,也有BAT的推送服务,还有如讯飞等的其他商业推送服务。这些都要钱的

阅读全文

与java实时推送相关的资料

热点内容
国外大数据广告 浏览:775
win10微信声音怎么设置在哪里 浏览:177
计算机程序设计技术水平java 浏览:255
uml统一建模实用教程课后答案 浏览:947
3d建筑建模视频教程 浏览:774
途歌app官网下载 浏览:936
数据库保存相对路径 浏览:493
小白ppt演示控制工具 浏览:244
qq公众号更换管理员 浏览:275
js怎么替换特殊符号 浏览:791
旋转扭曲工具coredraw 浏览:467
网络继电器控制开关图 浏览:735
南宁公交app下载软件 浏览:742
企业大数据服务平台 浏览:10
ps做iphone 浏览:258
大数据思维与决策txt 浏览:56
tchartjava 浏览:589
苹果破解无线网密码的软件 浏览:299
mac系统占越来越大 浏览:201
word缓存文件恢复 浏览:799