Ich habe einen PHP WebSocket Server erstellt und mit einem Webbrowser verbunden. Alles funktioniert gut. Jetzt möchte ich einige Cookie-Informationen an den Websocket-Server senden, aber die Cookies und nie mit den Kopfzeilen senden. Ich habe wirklich keine Ahnung, warum die Cookies nicht in den Anforderungsheadern enthalten sind. (Das Cookie wird gesetzt und nicht leer, wenn sie mit PHP in index.php echo'ing)PHP Cookies werden nicht durch Websocket Handshake gesetzt
Dies ist die Anfrage und Antwort-Header
Anfrage
GET ws://127.0.0.1:9000/chat HTTP/1.1
Host: 127.0.0.1:9000
Connection: Upgrade
Pragma: no-cache
Cache-Control: no-cache
Upgrade: websocket
Origin: http://localhost
Sec-WebSocket-Version: 13
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: nl-NL,nl;q=0.8,en-US;q=0.6,en;q=0.4
Sec-WebSocket-Key: 2nR9SZYdLOG32fpV6eJ/wA==
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
Antwort
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: QecMAdsem/PYww1pYkyjD+79OmM=
handshake
// do handyshake: (hybi-10)
$secKey = $headers['Sec-WebSocket-Key'];
$secAccept = base64_encode(pack('H*', sha1($secKey . '258EAFA5-E914-47DA-95CA-C5AB0DC85B11')));
$response = "HTTP/1.1 101 Switching Protocols\r\n";
$response.= "Upgrade: websocket\r\n";
$response.= "Connection: Upgrade\r\n";
$response.= "Sec-WebSocket-Accept: " . $secAccept . "\r\n";
Way of in-Client (Javascript) Verbindung zum Server
var socket = new WebSocket('ws://127.0.0.1:9000/chat');
Danke Ihnen sehr für die Antwort und für die Antwort! Es funktioniert jetzt. Ziemlich seltsam, ich dachte immer, dass localhost gleich 127.0.0.1 ist, also ist es egal, welchen ich benutzt habe, aber es stellt sich heraus, dass es nicht das selbe ist. – Piet