Cleanup send code in WebSocketConnection

This commit is contained in:
2024-02-21 03:17:11 +01:00
parent 9e1b2fcbae
commit c855fc177f
2 changed files with 46 additions and 7 deletions

View File

@ -214,25 +214,28 @@ class WebSocketConnection implements WebSocketInterface
}
public function write($data)
{
// Header; final, text frame, unmasked
$frame = chr(0x81) . chr(strlen($data)) . $data;
$this->outStream->write($frame);
{
return $this->send(self::OP_FRAME_TEXT, $data);
}
public function send(int $opcode, bool $final, string $data)
/**
*
*/
public function send(int $opcode, string $data, bool $final = true)
{
$frame = chr(($final?0x80:0x00) | ($opcode & 0xF));
$len = strlen($data);
if ($len > 126) {
$frame .= chr(0x7E) . chr(($len >> 8) & 0xFF) . chr($len & 0xFF);
} else {
$frame .= chr($len);
}
$frame .= $data;
$this->outStream->write($frame);
return true;
}
public function close()
@ -245,5 +248,25 @@ class WebSocketConnection implements WebSocketInterface
{
}
// private function hexdump($data): void
// {
// printf("%4d .\n", strlen($data));
// $rows = str_split($data, 16);
// $offs = 0;
// foreach ($rows as $row) {
// $h = []; $a = [];
// for ($n = 0; $n < 16; $n++) {
// if ($n < strlen($row)) {
// $h[] = sprintf("%02x%s", ord($row[$n]), ($n==7)?" ":" ");
// $a[] = sprintf("%s%s", (ctype_print($row[$n])?$row[$n]:"."), ($n==7)?" ":"");
// } else {
// $h[] = (($n==7)?" ":" ");
// $a[] = (($n==7)?" ":" ");
// }
// }
// printf("%04x | %s | %s\n", 16 * $offs++, join("", $h), join("", $a));
// }
// }
}