1、如何實現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();
2、百度自動推送代碼好用嗎?要添加在網站的哪裡
自動推送代碼,只是幫助網站內容的推送;
大的效果還沒看到,應該是有一定好處的;
添加到網站的通用模板裡面。
一般是添加在head或者footer裡面;
因為是要權重進行推送。
建議加到footer裡面,在底部的話不怎麼影響網站打開載入速度。對用戶體驗好點。
3、apns http/2推送給蘋果成功,但是手機設備沒收到什麼原因
1. 確認您的應用在蘋果開發者網站上已經正確配置了APNs,並且下載安裝了APNs證書;
2. 請使用設備來測試推送。模擬器是獲取不到device token的,所以不能進行綁定,當然也不能進行推送測試。滿足以上前提條件時,核對以下步驟:1. 確認修改注冊介面中的API_KEY是正確的應用;2. 正確調用bindChannel,並成功返回appid、userid和channelid,而且appid請確認是正確的應用;
3. 在管理界面的推送設置里,成功上傳.pem格式的APNs開發證書和生產證書(只測試開發版可以不需要生產證書,pem證書大小約為4K,並且fileencoding必須為utf8);
4. 注冊介面(+ (void)registerChannel:(NSDictionary *)launchOptions apiKey:(NSString *)apikey pushMode:(BPushMode)mode withFirstAction:(NSString *)leftAction withSecondAction:(NSString *)rightAction withCategory:(NSString *)category isDebug:(BOOL)isdebug)中,如果是測試開發版請設置BPushMode為BPushModeDevelopment,生產版設置為BPushModePruction;
5. 修改配置後,請卸載應用再安裝;
6. iOS推送只支持通知,並且在推送通知時,請正確勾選推送的是開發模式還是生產模式;
7. 如果在應用中還推送不了,請先用sdk自帶的demo進行調試,再次確認1~6步。
4、java怎麼調用http介面推送數據
這里有一個Java實現的Http請求。
HTTP請求:http://www.sojson.com/blog/123.html
HTTP介面測試工具:http://www.sojson.com/httpRequest/
有問題繼續問我!
5、從伺服器端向客戶端推送信息採用什麼協議實現(基於HTTP方式)?
但是這種情況的確存在,例如Comet架構。
Dojo Foundation定義了一套Bayeux協議專門從事這種場景下的使用。
通常,要實現瀏覽器和伺服器之間的雙工通訊,需要建立長連接,並通過非同步調用來實現。
Bayeux也被稱作分路復用協議,
Bayeux的主要目的是支持使用ajax的客戶端與伺服器端之間靈敏,快速的信息交互。
Bayeux 是一種用來在客戶端和伺服器端傳輸低延遲的非同步消息(主要通過http)的一種協議。它定義的消息通過命名通道進行路由並且能夠進行交互傳 送:server - client, client - server 甚至 client - client (當然還是需要通過server中轉)。默認的,此通道已經引用了發布的路由語義,但同時也支持其它路由模塊。
從伺服器端向客戶端非同步發送的數據通常被叫做 「伺服器推」(server-push)。這種使用ajax的web應用和伺服器推技術的結合稱作「Comet」。 Cometd是一個提供多種開發語言的Bayeux項目,由Dojo基金會提供支持。
6、如何在Java多線程下高效利用HttpClient連接同一伺服器介面?
您好,提問者:
1、先說長連接吧,如果TCP協議的話長連接可以通過心跳包來實現。
2、推送的話,這個可以弄一個定時器,來控制線程,推送發送完畢,線程stop()。
7、阿里雲 簡訊 狀態報告接收 HTTP批量推送模式為什麼接收不到?
其實就是接受一個 post請求的 http調用,他那不是有現成的sdk么,應該還有python版本的,你直接集成就好了!
8、wordpress網站的自動推送怎麼操作
有兩種方法:
在wp後台有一個ping服務。在WordPress後台->撰寫->更新服務,將各大搜索引擎ping地址填上即可:
http://ping.網路.com/ping/RPC2利用站長工具進行自動提交。這個只需要在站點添加如下這段js代碼,建議加在foot.php中。
9、http長連接技術是否支持安卓的推送。
感覺你這是ajax輪詢的方式,所以並不能說是伺服器推送消息給某個用戶,因為http是基於請求響應的。如果開發手機版本的話,也可以這么用,但是效率是不高的,如果是android的話,其實已經有一些推送技術的開源出來了,直接使用就可以,完全可以實現這種功能。我嘗試開發android的時候,使用過androidpn的推送技術,實現聊天和伺服器推送都沒有問題的。
10、PHP做HTTP介面如何做到主動推送信息
事件觸發的時候給目標網址發送數據就可以了,如果是定時推送就寫個定時任務。
使用 http_get($url) 或者用 curl 都可以發送數據。具體使用就不多說了,網路很多。