//怎么让客户端保持长链接???设置长超时 + 服务端长时间不返回信息(sleep()函数模拟)
请在子类中放心使用父类的东西
$result = $server->taskCo($tasks, 1);
$response->end('Test End, Result: ' . var_export($result, true));
start()
启动 HTTP 服务器
启动后开始监听端口,并接收新的 HTTP 和 WebSocket 请求。
$this->server->on('request', function ($request, $response) {
$response->header("Content-type", "text/html;charset=utf-8");
// 接收http请求从get获取message参数的值,给用户推送
// $this->server->connections 遍历所有websocket连接用户的fd,给所有用户推送
foreach ($this->server->connections as $fd) {
// 需要先判断是否是正确的websocket连接,否则有可能会push失败
if ($this->server->isEstablished($fd)) {
$this->server->push($fd, $request->get['message']);
}else{ ///这里有可能是http连接,而不是websocket连接。 【connections属性是tcp的属性,不能确定http、websocket哪个在用】
// $response->header("Content-type", "text/html;charset=utf-8");
echo "没有这个else,http请求会有问题【没有websocket连接的前提下】";
}
}
$response->end("<h1>没有websocket客户端连接. 服务器的连接:文件描述符#".$fd."</h1>");
});
tcp客户端没有设置·$client->recv();
NOTICE swFactoryProcess_finish (ERRNO 1005): connection[fd=2] does not exists
tcp连接超时,让服务器找不到客户端fd了。(测试中使用了sleep)
NOTICE swServer_master_send (ERRNO 1005): send 2 byte failed, session#1 does not exist