如何在 PHP websocket 中获取从 javascript 发送的纯文本的 socket_read 值

问题描述

我正在尝试创建我的小型 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 以二进制形式发送消息。我无法将该消息转换为纯文本。我不知道数据被发送到哪种语言或格式。请告诉我它是哪种格式以及如何将其作为下面的纯文本示例图片阅读

enter image description here

解决方法

最后我找到了从 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;
    }

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...