La situazione continua ad evolversi. Alcuni problemi si risolvono ed altri arrivano.
Sono riuscito a far funzionare il websocket php ben fatto trovato su github, e devo dire che è fatto fortuitamente bene.
Riesce anche a rilevare in tempo reale le deconnessioni su ogni browser, risolvendo parecchi dei problemi citati in precedenza.
E gestisce già la segmentazione del messaggio in frame, concatenandoli prima di passarli alla collback. Non so come cazzo funziona, ma so che funziona, quindi bella!
Purtroppo non è perfetto. Anche all’interno del codice si può trovare qualche //TODO che indica dei problemi da risolvere.
E ora il problema è che se un client prova ad inviare un messaggio molto lungo, dopo la trasmissione potrebbe disconnettersi. Dico potrebbe perché in effetti succede circa una volta su 10, e non mi è chiaro il motivo.
Lato server c’è un controllo all’interno dell’header del messaggio che verifica se il client ha inviato il flag per disconnettersi (non so che cazzo sia). E a volte questo controllo restituisce true, e il client viene forzatamente disconnesso dal server.
In ogni caso adesso riesco a inviare messaggi lunghi e riceverli lato server interi, e poi re-inviarli al client e fare un console.log del messaggio intero in un solo colpo.
Very GOOD!
Devo risolvere la deconnessione random e poi sono a posto, risolti tutti i problemi noti del WebSocket fatto in php. Potrebbe essere sufficiente intercettare lato client la deconnessione, ed eventualmente riconnettersi (con messaggio DRAG di init). Vedremo. Farò questo test, ed un test sulla lunghezza massima di un messaggio che posso inviare ricevendolo sia lato client che lato server tutto intero.
Spero che non ci sia da ricominciare tutto questo travaglio in Node.JS.