Соединение держит при подключении, рукопожатие проходит,
а вот как отправить на сервер и затем тоже самое сообщение переслать на клиент,
не могу понять.
Интересует как происходить должен дальнейший обмен сообщениями, хотя бы как на этом готовом сервером ws://echo.websocket.org
Вот код сервера сокета:
PHP:
скопировать код в буфер обмена
<?PHP $address = '0.0.0.0'; $port = 8080; //AF_INET - семейство протоколов | SOCK_STREAM - тип сокета | SOL_TCP - протокол if (($socket = socket_create(AF_INET , SOCK_STREAM , SOL_TCP )) < 0 ) {echo "NO SOCKET\n";}else{echo "\nYes socket ...\n";} //Связываем дескриптор сокета с указанным адресом и портом if (($bind = socket_bind($socket, $address, $port)) < 0 ) {echo "ERROR SOCKET ADRES PORT\n";}else{echo "Yes socket adres end port ...\n";} //разрешаем использовать один порт для нескольких соединений //Начинаем прослушивание сокета (максимум 5 одновременных соединений) if (($listen = socket_listen($socket, 0 )) < 3 ) {echo "ERROR PROSLUHIVANIE\n";}else{echo "Podkluchaem client ...\n";} //циклим do{ $header = socket_read($accept, 1024 ); //считывание данных с посланного хедера $handshaking=perform_handshaking($header, $accept); //Рукопожатие $test=socket_write($accept,$handshaking);//Посылаем ответ клиенту с рукопожатием //что тут писать чтобы принять и отправить сообщение }while(true); //Рукопожатие function perform_handshaking($receved_header,$client_conn) { foreach($lines as $line) { if(preg_match('/\A(\S+): (.*)\z/', $line, $matches)) { $headers[$matches[1]] = $matches[2]; } } $secKey = $headers['Sec-WebSocket-Key']; $upgrade = "HTTP/1.1 101 Web Socket Protocol Handshake\r\n" . "Upgrade: websocket\r\n" . "Connection: Upgrade\r\n" . "Sec-WebSocket-Origin: ws\r\n" . "Sec-WebSocket-Location: ws\r\n". "Sec-WebSocket-Accept: $secAccept\r\n\r\n"; return $upgrade; }
Вот код клиента:
CODE ( html):
скопировать код в буфер обмена
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'/> <script type="text/javascript"> window.onload=function(){ serverOn=document.getElementById('serverOn'); message1=document.getElementById('message1'); btnSend=document.getElementById('send'); btnStop=document.getElementById('stop'); label=document.getElementById('status'); msgs=document.getElementById('msgs'); //socket = new WebSocket("ws://echo.websocket.org");//Проверяем работоспособность тут socket = new WebSocket("ws://ваш адрес:8080");//ваш сервер //сервер заработал socket.onopen = function(){ label.innerHTML = "START SERVER"; } //отправляем сообщение серверу btnSend.onclick = function(){ socket.send(message1.value); } //принимаем сообщения с сервера socket.onmessage = function(event){ a=document.createElement("div"); a.innerHTML = event.data; msgs.appendChild(a); } //Сервер отключается socket.onclose = function(event){ label.innerHTML = "ERROR"; } } </script> <input id="serverOn" type="button" value="Соединится с сервером" /> <textarea id="message1" cols="80" rows="3">test massaga</textarea><input id="send" type="button" value="Отправить" /> <input id="stop" type="button" value="Остановить" /><label id="status" >...</label><label id="msgs" ></label>
PS. только не пишите зачем мне это нужно или присылайте ссылки статей на английском...(Отредактировано автором: 06 Марта, 2015 - 17:41:41)
|