无法使用新的Websocket协议发送消息
|
我正在尝试在php中开发一个websocket服务器。
到目前为止,这是我所做的:
(服务器部分)
$server = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_set_option($server, SOL_SOCKET, SO_REUSEADDR, 1);
socket_bind($server, \"localhost\", 10000);
socket_listen($server);
$client = socket_accept($server);
$message = socket_read($client, 5000);
$matches = array();
preg_match(\'#Sec-WebSocket-Key: (.*)\\r\\n#\', $message, $matches);
$new_key = new_key($matches[1]);
$new_message = \"HTTP/1.1 101 Switching Protocols\\r\\n\";
$new_message .= \"Upgrade: websocket\\r\\n\";
$new_message .= \"Connection: Upgrade\\r\\n\";
$new_message .= \"Sec-WebSocket-Accept: \" . $new_key . \"\\r\\n\\r\\n\";
socket_write($client, $new_message, strlen($new_message));
$new_message = \"Test message !\";
socket_write($client, $new_message, strlen($new_message));
function new_key($key)
{
$key .= \"258EAFA5-E914-47DA-95CA-C5AB0DC85B11\";
$key = sha1($key);
$new_key = \'\';
for ($i = 0; $i < strlen($key); $i+=2)
{
$new_key .= chr(intval($key[$i] . $key[$i+1], 16));
}
$new_key = base64_encode($new_key);
return $new_key;
}
/* End of file server.php */
(客户部分)
window.onload = function() {
var ws = new WebSocket(\'ws://localhost:10000\');
ws.onopen = function() {
alert(\'Connection open !\');
setInterval(function() {
ws.send(\'lol\');
}, 1000);
}
ws.onclose = function() {
alert(\'WebSocket close !\');
}
ws.onmessage = function(e) {
alert(e.data);
}
ws.onerror = function(e) {
alert(\'Error\');
}
};
第一个socket_write
正常工作(用于握手),并且open
事件已正确触发。但是第二个socket_write不起作用。我试图在open
事件上执行ws.send
,并在服务器部分添加第二个socket_read
,但它也不起作用。
谢谢,如果您有想法!
没有找到相关结果
已邀请:
2 个回复
链眷克袒姜
test3将失败,因为它是异步websocket。
搁手
对此