導航:首頁 > 編程語言 > 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實時推送相關的資料

熱點內容
小孩第一次進電影院英文翻譯 瀏覽:729
ios獲取項目文件路徑 瀏覽:100
色武俠小說 瀏覽:879
users文件夾共享 瀏覽:372
mybatis查詢大數據 瀏覽:278
染島貢電影 瀏覽:101
蘋果7黑屏指紋沒反應 瀏覽:655
如何把相冊轉成文件 瀏覽:973
pb這么獲取資料庫窗口的值 瀏覽:856
數據類型中哪些支持默認約束 瀏覽:711
裸眼3D電影左右格式下載 瀏覽:848
如何通過網路線控制連接主機 瀏覽:873
韓劇海嘯電影 瀏覽:231
韓國電影男孩在樓上偷看樓下 瀏覽:151
網址懂的都懂 瀏覽:209
日劇男的是攝影師 瀏覽:861
手機網路聯不上怎麼辦 瀏覽:965
在線免費看那種片網址 瀏覽:838
java移動圖片 瀏覽:126
拉姆查蘭的維語電影完整版 瀏覽:269

友情鏈接