Я новичок в 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 и как это сделать? Если сервер сбросится, он не потеряет соединение? – Vanguard
перед строкой с 'sleep (5)', добавьте 'flush();' и 'ob_flush();' –