我的目标是捕获Java服务器套接字实时生成的消息,并将这些消息显示在网页上。 我正在尝试使用php连接到套接字并从服务器接收数据。 php客户端应不断侦听服务器中的消息。
这是我的php代码
<?php
set_time_limit(0);
$serverAddress=SERVER_ADDRESS;
$serverListeningPort=SERVER_PORT;
//make a connection and get a socket object
if ( ($socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === FALSE )
{
echo "socket_create() failed: reason: " .socket_strerror(socket_last_error());
}
else
{
echo("socket create was successful");
echo("<br>");
}
echo ("Attempting to connect to host");
echo("<br>");
if ( ($result = socket_connect($socket, $serverAddress, $serverListeningPort)) === FALSE )
{
echo ("socket_connect() failed. Reason:".socket_strerror(socket_last_error($socket)));
}
echo ("Reading response:");
$message="";
while(true)//listen for ever
{
$message=socket_read($socket, 300);
if($message!=='')
{
print_r($message);
}
}
?>
当我加载此php页面时,大多数时候我会收到504网关超时错误。我已验证Java服务器正在拾取客户端连接。 有时,我只会收到一些消息,然后页面停止从服务器获取消息。不知道为什么,因为我有一个while(true)循环。
我正确使用了php套接字吗?我该如何实现自己的目标。
谢谢
答案 0 :(得分:0)
尝试在代码开头添加以下行。这样会将结果输出到浏览器。
ob_end_flush();
ob_implicit_flush(1);