问题描述
我正在尝试创建我的小型 websocket PHP 类,我想在其中创建诸如 onopen onmessage 之类的函数,例如 node js [我知道那里还有其他库,但我想自己学习]。到目前为止我能够使用下面的代码成功接收从 js websocket 到 PHP 的消息
// Braces inline:
"C_Cpp.formatting": "vcFormat",// (Sets formatting mode to vcFormat)
"C_Cpp.vcFormat.newLine.beforeOpenBrace.block": "sameLine","C_Cpp.vcFormat.newLine.beforeOpenBrace.function": "sameLine","C_Cpp.vcFormat.newLine.beforeOpenBrace.lambda": "sameLine","C_Cpp.vcFormat.newLine.beforeOpenBrace.namespace": "sameLine","C_Cpp.vcFormat.newLine.beforeOpenBrace.type": "sameLine",
经过一些研究,我发现 websocket 以二进制形式发送消息。我无法将该消息转换为纯文本。我不知道数据被发送到哪种语言或格式。请告诉我它是哪种格式以及如何将其作为下面的纯文本示例图片阅读
解决方法
最后我找到了从 this website 解码的方法
它实际上被屏蔽了,需要取消屏蔽。在这里,我从一个网站上找到了一个功能,我所要做的就是阅读带有以下自定义功能的未屏蔽文本
function unmask($text) {
$length = ord($text[1]) & 127;
if($length == 126) {
$masks = substr($text,4,4);
$data = substr($text,8);
}
elseif($length == 127) {
$masks = substr($text,10,14);
}
else {
$masks = substr($text,2,6);
}
$text = "";
for ($i = 0; $i < strlen($data); ++$i) {
$text .= $data[$i] ^ $masks[$i%4];
}
return $text;
}