我是http連接的新成員。我想要實現的是服務器應該通過持久連接週期性地向客戶端發送一些數據(通知)。如何通過http持久連接從服務器定期向客戶端發送請求
我寫在服務器端代碼的PHP,如:
<?php
set_time_limit(0);
header('Connection: keep-alive');
$i = 0;
while($i < 10){
echo "Hello$i<br/>";
sleep(5);
$i++;
}
?>
,並試圖利用Java來連接到服務器:
public static void main(String[] args) throws Exception {
URL oracle = new URL("http://localhost/connection.php");
URLConnection yc = oracle.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(
yc.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null)
System.out.println(inputLine);
in.close();
}
我預計從服務器獲取內容每五秒鐘如下所示:
Hello0<br/>
Hello1<br/>
...
但是,而不是這個java客戶端正在等待50秒。和打印:
Hello0<br/>Hello1<br/>Hello2<br/>Hello3<br/>Hello4<br/>Hello5<br/>Hello6<br/>Hello7<br/>Hello8<br/>Hello9<br/>
我希望服務器自己發送通知。而不是客戶端每五秒鐘連接到服務器。
你永遠不會沖洗你的連接服務器端。 – chrylis
@chrylis以及如何做到這一點?如果服務器刷新它不會失去連接?使用'sleep(5)'前加上 – Vanguard
,添加'flush();'和'ob_flush();' –