我有一个PHP类来推送带有套接字的消息:
function __construct()
{
$this->socket = fsockopen($this->host, $this->port, $errno, $errstr, 0); //I tried with 99999 for timeout too
}
function push($params)
{
$req = 'GET /push?'.$params." HTTP/1.1\r\n"
. 'Host: '.$this->host."\r\n"
. "Content-Type: application/x-www-form-urlencoded\r\n"
. 'Content-Length: '.strlen($params)."\r\n"
. "Connection: keep-alive\r\n\r\n";
fwrite($this->socket, $req);
}
但是,如果我尝试推送2条或更多信息,则NodeJS服务器只接收一条消息:
foreach(['foo=2', 'bar=42'] as $loop)
{
$pusher->push($loop);
}
现在,如果我在$this->socket = fsockopen($this->host, $this->port, $errno, $errstr, 0);
之前放置此行fwrite
,则会发送所有消息...
那么为什么我不能只使用一个连接用于同一个soket的多个请求?
我使用“keep-alive”并且我没有调用fclose
,所以我不明白为什么我的nodeJS服务器在第一种情况下只收到一条消息......