Luego de revisar mucho código y leer la documentación de websocket entendí que mas que un error me faltaba implementar la parte del enmascaramiento.
https://developer.mozilla.org/es/doc...do_Data_Frames
Así que solo me falta comprobar en el servidor si los datos vienen enmascarados y proceder a "decodificarlos"
Código PHP:
Ver originalprivate function seal($socketData) {
$b1 = 0x80 | (0x1 & 0x0f);
$length = strlen($socketData);
if ($length <= 125)
$header = pack('CC', $b1, $length); elseif ($length > 125 && $length < 65536)
$header = pack('CCn', $b1, 126, $length); elseif ($length >= 65536)
$header = pack('CCNN', $b1, 127, $length); return $header . $socketData;
}
private function unseal($socketData) {
$length = ord($socketData[1]) & 127; if ($length == 126) {
$masks = substr($socketData, 4, 4); $data = substr($socketData, 8); } elseif ($length == 127) {
$masks = substr($socketData, 10, 4); $data = substr($socketData, 14); } else {
$masks = substr($socketData, 2, 4); $data = substr($socketData, 6); }
$socketData = "";
for ($i = 0; $i < strlen($data); ++$i) { $socketData .= $data[$i] ^ $masks[$i % 4];
}
return $socketData;
}