A. 如何用java實現HTTP長連接
http長連接,全雙工的為websocket連接,spring4.0後jar中有websocket支持,對著API實現onopen,onmessage,onclose……方法就好了
B. 如何用java實現HTTP長連接
tomcat9提供了一種叫webSocket的東西,可以實現這個,但是必須要使用tomcat9來支持
另外一個就是運用長輪詢,就是前台給後台發一個請求, 然後後台一直不處理, 可以while循環或者sleep(1000), 每隔1秒去檢查是否應該返回數據, 如果後台決定要刷新了, 就返回數據, 然後前台接收到返回數據後去刷新你要刷新的東西, 刷新完畢後如果需要, 再次發送這個請求。當然,為了不阻塞其它的ajax請求, 長輪詢一般放在一個單獨的iframe里
C. java 實現長連接接受信息,發送信息
對於你這個需求,可以用當前比較熱門的websocket來解決。
websocket可以實現服務端和客戶端全雙工通信,實時性非常好。
你可以自己搭建websocket服務,也可以使用第三方的websocket推送框架,比如【GoEasy】。
【GoEasy】目前支持java、php、python等服務端語言,同時也支持小程序、vue、uniapp等前端技術,使用起來還是非常方便的。
D. 請教JAVA如何實現web下的長連接關鍵後台如何寫
目前web上的消息通訊方式主要有以下幾種。
輪詢,長連接,websocket
輪詢:隔一段時間訪問伺服器,伺服器不管有沒有新消息都立刻返回。
長連接:頁面向伺服器發出請求,由伺服器決定什麼時候返回。(如果有新消息則立刻返回,沒有的話就保持連接,直到有新消息才返回)
websocket:類似Java Socket,由Http請求模擬實現的socket。
要實現長連接的關鍵就是: 由伺服器端決定什麼時候返回數據。比如在servlet中。
doGet(...){
...
Thread.sleep(30000);
return ...
}
這就是一個長連接的例子,只是沒有任何意義而已。
你要做的就是在doGet中阻塞住,
while(!hasNewMsg){
sleep(500)
}
return newMsg...
當然你的ajax超時時間要設置長一點。
如果可以的話,最好可以使用websocket。
E. 如何實現java http長連接推送數據
Feign在默認情況下使用的是JDK原生的URLConnection發送HTTP請求,沒有連接池,但是對每個地址會保持一個長連接,即利用HTTP的persistence connection 。我們可以用Apache的HTTP Client替換Feign原始的http client, 從而獲取連接池、超時時間等與性能息息相關的控制能力。Spring Cloud從Brixtion.SR5版本開始支持這種替換,首先在項目中聲明Apache HTTP Client和feign-httpclient依賴
F. java怎麼實現長連接
應該是HTTP連接吧,HTTP連接本身的request/response模式設計就是短鏈接的,即伺服器端響應之後斷開連接。
若要做長連接,在沒有具體業務的情況下,最基礎的就是建立java.net.Socket連接,自己制定協議來控制斷開。伺服器端的實現老的有標准IO(java.net.*),新的有NIO(java.nio.*)。有具體業務時可以考慮一些成熟的協議來實現,如XMPP等。
G. 如何用java實現HTTP長連接
1、通過輪詢來實現長連接(偽·長連接)
2、websocket(真·長連接)
H. Java Socket 長連接怎麼實現
現編這個就是個多線程伺服器,只要在client不釋放連接,伺服器端的run里邊寫while(TRUE)循環,那麼就可以長期連接。
class ConnectionThread extends Thread{
Socket client;
int counter;
public ConnectionThread(Socket cl,int c){
client = cl;
counter= c;
}
@Override
public void run()
{
try{
String destIP=client.getInetAddress().toString();
int destport =client.getPort();
PrintStream outstream=new PrintStream(client.getOutputStream());
DataInputStream instream=new DataInputStream(client.getInputStream());
String inline=instream.readLine();
}//try
catch(IOException e){System.out.println(e);}
}//run
I. 如何用java實現HTTP長連接
都是短連接
實現長連接需要用socket 或者netty
J. 如何用java實現HTTP長連接
咱的理解:
當應用程序讀取完響應體內容後或者調用 close() 關閉了URLConnection.getInputStream()返回的流,
JDK中的HTTP協議句柄將關閉連接,並將連接放到連接緩存中。下次獲取URLConnection示例,並獲取InputStream流時,會再次使用之前打開的TCP連接。
也就是說:
public static String sendPost(String url, String param) { String result = ""; try { URL httpurl = new URL(url); HttpURLConnection httpConn = (HttpURLConnection) httpurl.openConnection(); httpConn.setDoOutput(true); httpConn.setDoInput(true); PrintWriter out = new PrintWriter(httpConn.getOutputStream()); out.print(param); out.flush(); out.close(); BufferedReader in = new BufferedReader(new InputStreamReader(httpConn.getInputStream())); String line; while ((line = in.readLine()) != null) { result += line; } in.close(); } catch (Exception e) { System.out.println("沒有結果!" + e); } return result; }
咱在間隔較短的時間內調用上面的方法(連接的地址不一樣,但還是同一個伺服器同一個項目),用的是同一個TCP連接。咱這么理解對嗎?不對的話請具體講講。謝謝。