我只是尝试使用javascript,apache,php来进行WebSocket握手。
为了清楚起见,我们开始:
{CLIENT}
当您访问example.com:8080时,它将在初始化时运行以下JS。
// JS
function init(){
var socket = new WebSocket("ws://example.com:8090"); //redirect on port 8090
socket.send("Here's some text that the server is waiting for");
}
{SERVER}
// APACHE(虚拟主机配置)* mod_proxy&已安装mod_proxy_wstunnel
<VirtualHost *:8090>
ServerName example:8090
DocumentRoot /var/www/vhost/uploader
ProxyPass "/sockets/" "http://example.com:8090"
</VirtualHost>
// PHP(/var/www/vhost/uploader/sockets/index.php)
<?php
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$ip = 'example.com';
socket_bind($sock, $ip);
socket_connect($sock, $ip, 8090);
$request = 'GET / HTTP/1.1' . "\r\n" .
'Host: example.com' . "\r\n\r\n";
socket_write($sock, $request);
socket_close($sock);
?>
我感到困惑的是,Apache正在对套接字和端口进行绑定/侦听,因此我不知道如何在PHP中访问它。
答案 0 :(得分:1)
您的服务器端PHP页面必须包含用于侦听websocket连接端口的代码。 Apache服务器侦听HTTP请求而不是websocket连接。试试socket.io。有一个PHP here的实现。
另一个选项是socketo.me。
G00d 1uck。