/**
* @param string $id
* @param string $type
* @param mixed $message
* @param int $flags
* @return bool
*/
private function sendMessage($id, $type, $message = null, $flags = self::MODE_STANDARD)
{
if (($frame = $this->getFrame($id, $type, $message)) === null) {
return false;
}
$isConnected = $this->isStarted();
if (!$isConnected) {
if ($this->flags['enableBuffering'] === true && ($flags & self::MODE_BUFFER_OFFLINE) === self::MODE_BUFFER_OFFLINE) {
return $this->buffer->add($frame);
}
} else {
if ($type === self::COMMAND_HEARTBEAT) {
if ($this->socket->closed === false && $this->socket->send($frame)) {
$this->connectionPool->registerHeartbeat($id);
return true;
}
} else {
if ($this->flags['enableHeartbeat'] === false || $this->flags['enableBuffering'] === true && ($flags & self::MODE_BUFFER_ONLINE) === self::MODE_BUFFER_ONLINE || $this->connectionPool->validateConnection($id) === true) {
$this->socket->send($frame);
$this->connectionPool->registerHeartbeat($id);
return true;
}
}
}
return false;
}