function cmd( $buf, $clientIp ) { foreach ( $lines as $line ) { continue; } $hash = base64_encode( sha1( $arr[ "Sec-WebSocket-Key" ] . '258EAFA5-E914-47DA-95CA-C5AB0DC85B11', true ) ); $respond = "HTTP/1.1 101 Switching Protocols\nUpgrade: websocket\nConnection: Upgrade\nSec-WebSocket-Accept: {$hash}\n"; return $respond; } function a() { $address = ( string ) "192.168.0.50"; $port = ( int ) 5014; $sock = socket_create( AF_INET, SOCK_STREAM, 0 ); while ( true ) { if ( socket_bind( $sock, $address, $port ) ) { break; } else { } } socket_listen( $sock ); while ( true ) { $client = socket_accept( $sock ); socket_getpeername( $client, $clientIp ); $input = socket_read( $client, 1024 ); $output = ""; continue; $output = cmd( $input, $clientIp ); if ( ord( $output ) !== 0 ) { socket_write( $client, $output . "\r\n" ); //socket_close( $client ); } else { //socket_close( $sock ); a(); } } } a();
Przy połączeniu odbiera cała ramkę typu
Kod
GET / HTTP/1.1
Host: 192.168.0.50:5014
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:18.0) Gecko/20100101 Firefox/18.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: pl,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Sec-WebSocket-Version: 13
Origin: http://example.com
Sec-WebSocket-Key: NVmbNMVrhQSZmdbm/eBlFA==
Connection: keep-alive, Upgrade
Pragma: no-cache
Cache-Control: no-cache
Upgrade: websocket
Host: 192.168.0.50:5014
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:18.0) Gecko/20100101 Firefox/18.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: pl,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Sec-WebSocket-Version: 13
Origin: http://example.com
Sec-WebSocket-Key: NVmbNMVrhQSZmdbm/eBlFA==
Connection: keep-alive, Upgrade
Pragma: no-cache
Cache-Control: no-cache
Upgrade: websocket
i odpowiada
Kod
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: nDnkbQ6/xHkFviQvWL5goM2k+zI=
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: nDnkbQ6/xHkFviQvWL5goM2k+zI=
Po połączeniu z klienta wysyłam mu tekst, lecz nigdzie go w otrzymanych danych nie widać. Wie ktoś może co tutaj jest źle i dlaczego to nie działa?