Autor | Zpráva | ||
---|---|---|---|
IdemeNaHavaj Profil |
#1 · Zasláno: 29. 9. 2016, 11:33:03
Ahoj
snažím sa naučiť niečo to o websocket a skúšam si urobiť nejakú mini hru ktorá by sa ovládala pohybom myši. Aktuálne mám: Pripojenie k websocket: var connection = new WebSocket('wss://moj_web.sk:1234'); Pri pohybe myši posielanie aktuálnej pozície cez binary frame: $("body").mousemove(function( event ) { var data = { name: "lol", pos: [event.pageX, event.pageY] }; //convert to binary frame var data2 = new Uint16Array(data); console.log(data2); // [] connection.send(data2); // Binary Frame (Opcode 2, mask) | length: 0 }); A na serverovej strane si aktuálne správu len preposielam späť: connection.on('message', function(message) { for (var i = players.length - 1; i >= 0; i--) { players[i].connection.send(message.binaryData); } }); Čo by som chcel vedieť: Ako môžem na serverovej strane prekonvertovať ten Binary Frame späť do čitatelnej podoby aby som mohol updatnúť aktuálnu pozíciu myške a zaslať aktualizáciu všetkým pripojeným? |
||
Radek9 Profil |
#2 · Zasláno: 29. 9. 2016, 12:59:04
IdemeNaHavaj:
Co konkrétně myslíš, že dělá ten řádek 9? Na řádku 10 a 12 přeci vidíš, že to je jen prázdné pole. Proč prostě nepošleš JSON string? |
||
IdemeNaHavaj Profil |
#3 · Zasláno: 29. 9. 2016, 13:30:26
Radek9:
„Co konkrétně myslíš, že dělá ten řádek 9?“ To presne neviem ale myslel som že prekonvertuje objekt data (v ktorom je name "lol" a pozícia) do toho "Binary frame". „Na řádku 10 a 12 přeci vidíš, že to je jen prázdné pole.“ A prečo je, prosím, prázdne keď som tam uložil cez "Uint16Array" data objekt? „Proč prostě nepošleš JSON string?“ Pretože si myslím že keď je konzola plná textu "Binary Frame" tak je to rýchlejšie ako keby tam malo skákať každú sekundu niekolko znakový objekt :-). Ak sa mýlim, tak dôvod mením na: pretože posielať strinky už viem, teraz chcem vedieť posielať Binary Frame. |
||
Radek9 Profil |
#4 · Zasláno: 29. 9. 2016, 13:38:42
IdemeNaHavaj:
„že prekonvertuje objekt data do toho "Binary frame".“ To ne. Ta funkce prostě jen vytvoří prázdné pole, protože netuší, co má s tím objektem dělat. Do Uint16Array můžeš logicky uložit jen 16bitová celá nezáporná čísla. To, jak ten objekt do 16bitových čísel převedeš, je ale už na tobě. Proto ti říkám, že je mnohem jednodušší použít JSON, než si vymýšlet vlastní binární formát. |
||
IdemeNaHavaj Profil |
Radek9:
To som nevedel ze to vytvori prazdne pole. Nasiel som si na nete funkcie ktoré vedia konvertovať tam a späť bez problémov. Takže téma vyriešená. |
||
Radek9 Profil |
#6 · Zasláno: 29. 9. 2016, 14:29:47
IdemeNaHavaj:
Já pořád nechápu, proč to děláš tak složitě. Navíc ty funkce, cos poslal, stejně jen konvertují string na binární pole a obráceně. Takže tvůj problém serializace objektu neřeší, ne? |
||
IdemeNaHavaj Profil |
#7 · Zasláno: 29. 9. 2016, 14:39:26
Radek9:
Hlavne mi šlo o to aby sa cez websocket neposielali dlhé stringy ale len 2-3 slová, určite je to rýchlejšie ako keby tam mal byť niekolko desiatok/stoviek krát (pri vačšom počte hráčov možno aj tisíc krát) za sekundu všetky údaje o každom hráčovy (meno, pozícia, body, level a neviem čo všetko ma v buducnosti napadne) už podla toho ako to vyzerá myslím že tie kratšie verzie budú rýchlejšie, ale to neviem na 100% iba si to myslím. |
||
Časová prodleva: 8 let
|
0