Socket.io/Engine.io a Sock.js jsou knihovny, kter umožňují realtime komunikaci na webu, zjednodušeně to programátorovi dává možnost navázat pomocí javascriptu spojení se serverem, které se bude tvářit, že má vlastnosti klasického tcp socketu. Interně se pak vybere ta nejlepší dostupná transportní vrstva (např. websockety).
Engine.io i Sock.js vlastní data před odesláním ještě zakódují.
Sock.js na datech (musí to být string, pokud není, vynutí se přes explicitní konverzi skrz výraz (''+data)) provede json encoding.
Engine.io data převádí na utf8 pomocí této knihovny
https://github.com/mathiasbynens/utf8.js/No na co se mi pořád nedaří přijít a nenašel jsem odpověď ani na netu (ani na SO nikdo asi neví):
Proč je nutné ty data kódovat do utf-8, wtf? Tomu vůbec nerozumím. Přece ajaxový požadavek je defaultně utf-8, takže
data se z js kódování ucs-2/utf-16 převedou na utf-8 a server je dostane jako utf-8.
Jediná věc, co mě nějak ještě napadá je, jestli není nějaký problém v tom, když je v meta tagu html stránky nastavéné nějaké jiné kódování než utf-8, že by to pak nešlo tím ajaxem poslat jako utf-8 (to by pak způsobovalo problémy při podpoře znaků, které nelze kódovat tím kódováním ve kterém je ta stránka).
Nemá někdo nějaké typy, proč se prostě nevezmou ty data co se mají odeslat a neodešlo se v té podobě v jaké jsou?