我正在尝试使用PHP创建一个简单的套接字。到目前为止,套接字开始接受来自客户端的请求,但是我从客户端接收的缓冲区已加密,
这是我的PHP,通过以下命令在服务器上运行$ php file.php
:
$user_socks = array(0 => false);
$socket = socket_create_listen(8080);
socket_set_nonblock($socket);
while(true){
$new_conn = socket_accept($socket);
if(!$new_conn && !$user_socks[0])
continue;
if($new_conn && !$user_socks[0])
$user_socks[0] = $new_conn;
$buffer = socket_read($user_socks[0], 2048);
var_dump(mb_convert_encoding($buffer, 'ASCII', 'UTF-8'));
}
我只是在Firebug控制台中运行此行JS,以尝试连接到脚本:
var test = new WebSocket('wss://192.168.2.253:8080');
有人知道我该如何解密此文本?
经过一些测试,我弄清楚了如何使它工作。原来,该解决方案被stunnel
用作守护程序,为Web套接字提供加密。
为了使此功能正常工作,以下是所有必要的额外部分:
Apache VHost配置
<VirtualHost *:443>
<IfDefine PROXY>
SSLProxyEngine On
ProxyPass "/wss/" "wss://127.0.0.1:4430"
ProxyPassReverse "/wss/" "wss://127.0.0.1:4430"
</IfDefine>
</VirtualHost>
隧道配置
cert = /path_to_key.pem
key = /path_to_key.pem
[wss]
accept = 4430
connect = 8080
然后使用以下命令连接到加密的Web套接字
var test = new WebSocket('wss://hostname.tld/wss');
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句