Errore "frame di continuazione imprevisto ricevuto" irrisolvibile di Websockets

Ho scritto un algorithm per elaborare i dati Websockets in PHP. La decodifica da Chrome / Firefox va bene, ma ho sempre problemi nell'invio dei dati dal server al client (Chrome 18, Websockets 13). La routine del server risponde automaticamente con "Ricevuto" dopo aver ricevuto un messaggio.

Errore del frame di continuazione.

Non ci sono assolutamente altri byte che seguono il messaggio, come indica STDOUT e indica il dump di WireShark (dati recuperati tramite RawCap). In WireShark / RawCap, per qualche motivo, il messaggio server-> client è apparso sotto un messaggio "ACK".

STDOUT

Wireshark

Vorrei davvero apprezzare l'intuizione di qualcuno su questo. Mi sta facendo diventare pazzo.

Dustin Oprea

Capito. Si scopre che il codice che ho originariamente adottato ha messo un singolo carattere NULL dopo le newline seguendo le intestazioni di risposta handshake e non l'avevo notato. Sembra che a) il browser sposti tutti i messaggi websocket ricevuti attraverso un buffer di caratteri che lascia il singolo carattere NULL in primo piano una volta che l'authentication-risposta è stata elaborata, e b) non è stato un problema fino a quando il messaggio -next- è stato ricevuto.

Flusso:

1) Browser (Chrome e Firefox) riceve una risposta handshake con un NULL extra alla fine.
2) Il browser approva la risposta dell'handshake.
3) Il browser invia un messaggio (in questo caso, con un opcode "text", non che necessariamente è importnte) al server.
4) Il server decodifica correttamente i frame.
5) Il server invia un messaggio indietro attraverso la session websocket stabilita.
6) Il cliente si lamenta di avere un frame di continuazione inaspettato.

In alcune condizioni, credo di essere stato in grado di manipolare il messaggio per sopprimere un errore dal browser, ma non ho ancora ricevuto il messaggio del server nel browser.

Come esempio di quanto sopra, credo che, in origine, il server stava inviando una risposta automatica di text di "risposta" e ha ricevuto il messaggio sopra. In seguito l'ho cambiato in "1234" e ho ancora ricevuto il messaggio sopra. Tuttavia, l'ho modificato in "123" e non ho più ricevuto l'errore, ma non ho ancora ricevuto un evento messaggio nel Javascript.

Dustin Oprea