2017-04-14 137 views
0

好的,所以我有一個具有文本/數據的apache服務器,我想發送到Java客戶端。問題是數據會經常變化,我不希望客戶端不斷地在服務器上進行讀取,因爲顯然我不想要一個持續的ping。我知道我可以創建一個客戶端套接字,但這需要我的用戶端口轉發才能訪問該服務器,這對我的用戶不起作用。Java - 如何在不經常ping的情況下如何接收數據

我在網上找到的是UDP punching可能工作或NAT傳輸,但我找不到任何示例如何在Java中執行它。

  • 如果您有任何疑問,請隨時發表評論:)
+0

你不能使用服務器發送的事件或websockets嗎? – frz3993

+0

我沒有發現任何可以讓服務器隨機響應客戶端的東西。因爲它的apache網絡服務器,我不認爲你可以做事件。? – DrBrad

回答

1

你可以Recieve Server-Sent Event notifications,其中的服務器發送數據,使用PHP和JS爲例:

var source = new EventSource("demo_sse.php"); 
source.onmessage = function(event) { 
    document.getElementById("result").innerHTML += event.data + "<br>"; 
}; 

PHP:

<?php 
header('Content-Type: text/event-stream'); 
header('Cache-Control: no-cache'); 

$time = date('r'); 
echo "data: The server time is: {$time}\n\n"; 
flush(); 
?> 
+0

謝謝,你知道我怎麼能用Java來做一個onmessage? – DrBrad

+0

檢查這個問題:http://stackoverflow.com/questions/31768349/how-does-server-sent-events-work –

+0

你發送的東西在java中工作得很好,但那是假設我想要一個服務器,有沒有辦法在Java中將服務器事件作爲客戶端? – DrBrad

相關問題