protected function _encode($payload, $type = 'text')
{
$frameHead = array();
$payloadLength = strlen($payload);
switch ($type) {
case 'text':
// first byte indicates FIN, Text-Frame (10000001):
$frameHead[0] = 129;
break;
case 'close':
// first byte indicates FIN, Close Frame(10001000):
$frameHead[0] = 136;
break;
case 'ping':
// first byte indicates FIN, Ping frame (10001001):
$frameHead[0] = 137;
break;
case 'pong':
// first byte indicates FIN, Pong frame (10001010):
$frameHead[0] = 138;
break;
}
if ($payloadLength > 65535) {
$ext = pack('NN', 0, $payloadLength);
$secondByte = 127;
} elseif ($payloadLength > 125) {
$ext = pack('n', $payloadLength);
$secondByte = 126;
} else {
$ext = '';
$secondByte = $payloadLength;
}
return $data = chr($frameHead[0]) . chr($secondByte) . $ext . $payload;
}