我的套接字服务器工作量很大,但是我试图实现一些新功能并且它无法正常工作。
在我的套接字服务器中,我使用$ response字符串向客户端发送消息。如果此字符串与空值不同,则服务器将为客户端发送消息。
$ response由首先从客户端获取的消息服务器定义,例如:
if($data=="CODE:A")
{
$response="Hello";
}
所以,我需要做的是在3分钟后向客户端发送消息,但不仅仅是因为睡眠(180)它有效,我的问题是我需要定义向客户端发送2个不同的答案,如果$ data中的代码等于CODE:C,第一条消息必须在没有等待的情况下发送,第二条消息必须在3分钟后发送,例如:
if($data=="CODE:C")
{
$response = "Msg 1";
}
else if($data=="CODE:C")
{
sleep(180);
$responde = "Msg 2";
}
我的问题是,如果我设置上面这样的代码,$ response只在3分钟后向客户端发送消息,并且只发送第一条消息,第二条消息不发送。
如果我把第二个代码放在fisrt里面只创建1,如果在3分钟之后对客户端的$响应总是Msg 2.
如何实现此功能? 我已经尝试使用$ t = time()+ 180并检查时间是否等于$ t但没有任何反应。
答案 0 :(得分:0)
将每条消息写入套接字,理想情况下,接收端将知道轮询服务器以获取更多数据并且不终止套接字会话:
if($data=="CODE:C")
{
fwrite($client, "Msg 1"); //Write the first message to the socket
fflush($client);
sleep(180); //Wait
fwrite($client, "Msg 2"); //Write the second message to the socket
}