Obsah
WebSockets – WS) - vzťah medzi serverom a klientom na prijímanie informácií zo servera bez toho, aby ste museli najprv požadovať klientsku časť, prijímanie tzv. PUSH notifikácie. Ideálna schéma interakcie JavaScript WebSocket vyzerá, že v serverovej časti je jedno vlákno, ktoré spracováva informácie, napríklad počúva zmeny databázy alebo udalosti vyvolané inými procesmi, aby súčasne odosielalo informácie všetkým klientom bez použitia zdrojov. Klienta WebSocket v JS a HTML5 pomocou rozhrania WS poskytuje väčšina moderných prehliadačov: IE 10+, Chrome 16+, Firefox 11+, Safari 6+.
Definícia WebSockets

Webové zásuvky sú definované ako obojsmerná komunikácia medzi serverom a klientom. Kľúčovými bodmi JavaScript WebSocket sú skutočná súbežnosť a optimalizácia výkonu, čo vedie k citlivejším a bohatším webovým aplikáciám.
Protokol zavádza plne duplexnú komunikáciu od nuly. Webové zásuvky sú krokom vpred v poskytovaní funkcií pracovnej plochy v prehliadačoch. Demonštrujú novú etapu vývoja, ktorá sa už dlho očakáva v internetovej technológii klient/server.
Hlavné funkcie JavaScript WebSocket sú nasledujúce:
- Protokol je štandardizovaný, čo znamená, že je možné organizovať komunikáciu medzi webovými servermi a klientmi v reálnom čase.
- Webové zásuvky sa stávajú multiplatformovým štandardom pre komunikáciu medzi klientom a serverom v reálnom čase.
- Štandard umožňuje nový druh aplikácií.
- Vďaka tejto technológii môžu podniky v reálnom čase urýchliť svoju prácu.
Najväčšou výhodou JavaScript WebSocket je obojsmerná komunikácia (full duplex) cez jedno TCP pripojenie. HTTP má vlastnú sadu schém, ako sú http a https. Protokol Web Socket má tiež podobnú schému definovanú v šablóne URL. Najnovšia špecifikácia protokolu WS je definovaná ako RFC 6455 - navrhovaný štandard. RFC 6455 je podporovaný rôznymi prehliadačmi, ako sú Internet Explorer, Mozilla Firefox, Google Chrome.
Duplexná komunikácia

Predtým, ako pristúpime k potrebe používať webové zásuvky, je potrebné sa pozrieť na existujúce metódy, ktoré sa používajú na duplexnú komunikáciu klient Java WebSocket. Sú to nasledovné:
- hlasovanie;
- dlhý prieskum;
- streaming;
- postback a AJAX;
- HTML5.
Dotazovanie možno definovať ako metódu, ktorá vykonáva periodické dotazy bez ohľadu na údaje, ktoré existujú v prenose. Posielajú sa synchrónne. Odpoveď servera obsahuje dostupné údaje alebo niektoré upozornenia.
Dlhý prieskum, ako už názov napovedá, zahŕňa podobnú techniku prieskumu. Klient a server udržujú pripojenie aktívne, kým sa neprijmú niektoré údaje alebo vyprší časový limit. Ak sa spojenie z akéhokoľvek dôvodu stratí, klient Java WebSocket môže znova spustiť postup a vykonať postupnú požiadavku. Dlhé hlasovanie nie je nič iné ako zlepšenie výkonu v priebehu procesu hlasovania, ale neustále dotazy môžu proces spomaliť.
Možnosti streamovania a Ajaxu
Toto sa považuje za najlepšiu možnosť prenosu údajov v reálnom čase. Server udržuje pripojenie otvorené a aktívne s klientom, kým sa neprijmú potrebné údaje. V tomto prípade sa spojenie považuje za otvorené na dobu neurčitú. Streamovanie zahŕňa hlavičky HTTP, ktoré zvyšujú veľkosť súboru a latenciu. To možno považovať za hlavnú nevýhodu.
Toto je skrátená forma asynchrónneho JavaScriptu a XML. Objekt XMLHttpRequest vám umožňuje spustiť Javascript bez opätovného načítania celej webovej stránky. AJAX odosiela a prijíma iba časť webovej stránky. Hlavné nevýhody Ajaxu v porovnaní s webovými vreckami JavaScript sú:
- Posielajte hlavičky HTTP, čo zvyšuje celkovú veľkosť.
- Polovičná duplexná komunikácia.
- Webový server spotrebuje viac zdrojov.
HTML5 je spoľahlivý rámec pre vývoj a navrhovanie webových aplikácií. Hlavnými piliermi sú značkovacie API, CSS3 a Javascript.
Funkcia

WebSocket predstavuje významnú aktualizáciu v histórii webovej komunikácie. Pred svojou existenciou bola všetka komunikácia medzi webovými klientmi a servermi založená iba na HTTP. Webová zásuvka pomáha pri dynamickom toku pripojení, ktoré sú trvalé plne duplexné. Plný duplex sa vzťahuje na komunikáciu z oboch koncov s výraznou vysokou rýchlosťou. Toto sa nazýva menič hier kvôli jeho efektívnemu prekonaniu všetkých nedostatkov existujúcich protokolov.
Význam WS pre vývojárov a architektov:
- Nezávislý protokol založený na TCP, navrhnutý na podporu akéhokoľvek iného protokolu, ktorý tradične funguje iba nad čistým pripojením TCP.
- Transportná vrstva, na ktorej môže fungovať akýkoľvek iný protokol.
WebSocket API podporuje schopnosť definovať subprotocols-knižnice protokolov, ktoré dokážu interpretovať určité typy protokolov. Príklady takýchto protokolov zahŕňajú XMPP, STOMP a AMQP. Vývojári už nemusia premýšľať o type pripojenia z hľadiska paradigmy HTTP "request-response.
, jedinou požiadavkou na strane prehliadača je spustenie knižnice JavaScript, ktorá dokáže interpretovať podanie ruky WS, nadviazať a udržiavať spojenie. Na strane servera je priemyselným štandardom použitie existujúcich knižníc protokolov, ktoré bežia nad protokolom TCP a používajú bránu.
Funkčnosť webových zásuviek:
- WebSocket pripojenia sú iniciované cez HTTP.
- HTTP servery zvyčajne interpretujú ws handshake ako požiadavku na aktualizáciu.
- Webové zásuvky môžu byť doplnkom existujúceho prostredia HTTP a môžu poskytnúť potrebnú infraštruktúru na pridanie webových funkcií. Spoliehajú sa na pokročilejšie plne duplexné protokoly, ktoré umožňujú prenos údajov v oboch smeroch medzi klientom JavaScript WebSocket a serverom.
Implementácia klienta v JavaScripte
Zdrojový kód súboru JavaScript s názvom wsclient.js je zahrnutý na stránke HTML5, aby mohol otvoriť pripojenie WebSocket. Skript obsahuje kód na vytvorenie klienta WS pomocou jeho rozhrania.
Jednoduchá stránka HTML5 sa používa na vytvorenie formulára na pripojenie ku koncovému bodu servera a výmenu správ. Stránka HTML používa wsclient.skript js ak chcete spustiť súbor HTML, otvorte ho v prehliadači, napríklad v prehliadači Google Chrome, výberom možnosti "Súbor" -> "Otvoriť".
Jednoduchý server je možné ľahko implementovať v jazyku Java. Vráti iba správu prijatú od klienta veľkými písmenami:
- Otvorte formulár wsclient.html vo webovom prehliadači a zadajte potrebné parametre pripojenia WebSocket a potom kliknite na tlačidlo "Pripojiť". tlačidlo ak bolo spojenie úspešne nadviazané, tlačidlo bude deaktivované a tlačidlo" Odpojiť " bude povolené.
- Riadia správu v poli "Text správy" a kliknite na tlačidlo"Odoslať". tlačidlo, server ho zobrazí veľkými písmenami a klient JavaScript ho zobrazí v textovej oblasti.
- "Nástroje Pre Vývojárov" Google Chrome je dobrý nástroj na skúmanie pripojení WebSocket. V okne "Nástroje Pre Vývojárov" prejsť na kartu "Sieť" a výberom položky WS zobrazíte zoznam všetkých pripojení pre aktuálnu stránku.
- Kliknutím na kartu "hlavička" zobrazíte hodnoty požiadaviek a odpovedí.
- Na karte rámce sú uvedené všetky odchádzajúce a prichádzajúce správy. Prvá správa je to, čo bolo odoslané z klienta na server, a druhá správa je ozvena servera veľkými písmenami.
- Karta časovanie zobrazuje, ako dlho bolo pripojenie otvorené.
- Konzoly sa používajú na zobrazenie aktuálnej inštancie WS, čo je v rámci rozsahu HTML stránky.
- Zadajte názov premennej JavaScript WebSocket, WS, a konzola vytlačí reprezentáciu objektu JSON.
- ReadyState. Vlastnosť objekt zobrazuje stav pripojenia. Hodnota 1 znamená, že je otvorená a pripravená na prijímanie a odosielanie správ. Môže sa použiť skontrolovať pripojenie WS pred pokusom o prenos údajov. Ak je spojenie uzavreté, je možné implementovať logiku jeho automatického opätovného pripojenia.
- Wireshark je veľmi komplexný a užitočný nástroj na monitorovanie sieťovej prevádzky. Môžete si ho zadarmo stiahnuť z oficiálnych webových stránok. Po inštalácii ho spustite a vyberte sieťové rozhranie na zachytenie prenosu.
- Ak chcete zobraziť iba návštevnosť WS, zadajte do poľa filter websocket. Kliknutím na rámček zobrazíte obsah vrátane skutočného užitočného zaťaženia správy. Posuňte sa nadol na uzol textové údaje založené na riadkoch a rozbaľte ho.
- Kliknite pravým tlačidlom myši na komprimované užitočné zaťaženie a vyberte možnosť "Zobraziť bajty paketov". V dialógovom okne vyberte z rozbaľovacieho zoznamu" dekódovať "možnosť" komprimované", aby ste zobrazili užitočné zaťaženie vo formáte obyčajného textu.
Konfigurácia Java WebSocket spring

Spring-boot-starter-websocket-poskytuje užitočné predvolené hodnoty pre WS. Najskôr nakonfigurujte sprostredkovateľa správ STOMP. V ňom WebSocketConfig.Java definuje koncový bod sprostredkovateľa správ STOMP a koncový bod aplikácie websocket.@Konfigurácia-trieda konfigurácie pružiny.
EnableWebSocketMessageBroker-umožňuje spracovanie správ podporované maklérom. Tu používajú STOMP ako sprostredkovateľa správ.
Metóda ConfigureMessageBroker () umožňuje jednoduchému sprostredkovateľovi založenému na pamäti odosielať správy klientovi podľa cieľov s predponami "/ topic " a "/ queue". Označuje tiež predponu "/app" pre tie, ktoré sú spojené s zneplatnenými metódami mapovania správ @v triede radiča. Táto predpona sa použije na identifikáciu všetkých zobrazení správ. Napríklad"/app / message " je koncový bod, pre ktorý radič WebSocket.ProcessMessage z metódy Client () je mapovaná.
. Podobne RegisterStompEndpoints () umožňuje podporu STOMP a registruje koncové body stomp v "/ greeting". Zároveň budú všetky správy webového soketu JavaScript smerované cez STOMP, čo tiež pridáva ďalšiu vrstvu zabezpečenia do koncového bodu webového soketu. Pri vytváraní pripojenia WS z Javascriptu sa používa iba tento špecifický koncový bod Stomp.
V konfigurácii nižšie, Ak chcete povoliť podporu SockJS poskytovať voliteľnú reverznú akciu, je potrebné vykonať nasledujúce zmeny: registry.addEndpoint ("/pozdrav") .withSockJS ().
Výhodou použitia SockJS je, že vždy, keď je pripojenie webového soketu odpojené alebo nie je možné nadviazať, bude znížené na HTTP a komunikácia medzi klientom a serverom môže stále pokračovať.

Spracovanie Chýb
Hneď ako sa vytvorí spojenie medzi klientom a serverom, udalosť Open sa spustí z inštancie WS. Generujú sa chyby, ktoré sa vyskytnú počas komunikácie. Toto sa určuje pomocou udalosti onError. Výskyt chyby je vždy sprevádzaný prerušením pripojenia.
onError-udalosť sa volá, keď sa medzi komunikáciami niečo pokazí. Po chybe udalosti nasleduje ukončenie pripojenia. Odporúča sa vždy informovať používateľa o neočakávaných chybách a pokúsiť sa znova pripojiť pripojenie.
Pokiaľ ide o spracovanie chýb, musíte zvážiť interné aj externé parametre:
- Interné parametre zahŕňajú chyby, ktoré môžu byť generované v dôsledku chýb v kóde alebo neočakávaného správania používateľa.
- Externé chyby nemajú nič spoločné s aplikáciou, skôr súvisia s parametrami, ktoré nie je možné ovládať. Najdôležitejšie z nich je sieťové pripojenie.
- Každá interaktívna obojsmerná webová aplikácia vyžaduje aktívne internetové pripojenie.
Kontrola dostupnosti siete
V moderných desktopových a mobilných aplikáciách je bežnou úlohou skontrolovať dostupnosť siete. Najbežnejší spôsob pre WebSocket php JavaScript je vytvoriť požiadavku HTTP na webovú stránku, ktorá musí byť aktivovaná, napríklad google.com. Ak je žiadosť úspešná, počítač alebo mobilné zariadenie oznámi, že existuje aktívne pripojenie. Podobne má HTML XMLHttpRequest na určenie dostupnosti siete.
HTML5 tiež tento proces ešte uľahčil a predstavil spôsob, ako skontrolovať, či prehliadač dokáže prijímať webové odpovede. To sa dosiahne pomocou navigátora objektov.

Režim Offline znamená, že buď zariadenie nie je pripojené, alebo používateľ vybral režim offline na paneli s nástrojmi prehliadača.
Testovanie Java WebSocket používa jednoduchý ws-klient. Hneď ako sa vytvorí spojenie, odošlú údaje na server a vytlačia prijatú odpoveď: import websocket.

onopen, onClose a onmessage udalosti
WebSocket Server je jednoduchý program, ktorý zvládne udalosti a akcie WS. Zvyčajne poskytuje metódy podobné klientskemu API. Zároveň však väčšina programovacie jazyky zabezpečenie implementácie komunikácie medzi serverom WebSocket a klientom, zvýraznenie iniciovaných udalostí a akcií.
WebSocket server funguje podobne ako klienti. Reaguje na udalosti a v prípade potreby vykonáva akcie. Bez ohľadu na použitý programovací jazyk každý server WebSocket vykonáva určité postupy. Inicializuje sa na adrese webového soketu, spracováva udalosti onOpen, onClose a onMessage a tiež odosiela správy klientom. Existujú štyri hlavné udalosti Websocket API:
- otvoriť;
- správa;
- uzavretý;
- chyba.
Každá z udalostí je riešená implementáciou funkcií, ako sú onOpen, onMessage, onClose a onError. Toto je možné implementovať aj pomocou metódy addEventListener.
Inštancia webových zásuviek v jazyku Java
Každý server WS vyžaduje platného hostiteľa a port. Príklad vytvorenia inštancie Websocket na serveri: var server = nový WebSocketServer ("ws: / / localhost: 8181").
Akákoľvek platná adresa URL sa môže použiť so špecifikáciou portu, ktorá sa predtým nepoužívala. Je veľmi užitočné viesť záznamy o pripojených klientoch, pretože zhromažďuje a ukladá rôzne údaje alebo každému z nich odosiela rôzne správy.
Fleck predstavuje prichádzajúce spojenia (klientov) s rozhraním iwebsocketconnection. Kedykoľvek sa niekto pripojí alebo odpojí od služby, môžete vytvoriť alebo aktualizovať prázdny zoznam: var clients = nový zoznam ().
Potom zavolajú metódu štartu a čakajú na pripojenie klientov. Po spustení môže server prijímať prichádzajúce pripojenia. Vo Flecku potrebuje metóda spustenia parameter, ktorý určuje soket, ktorý spustil udalosti: server.Štart (zásuvka) =>{});
Ak chcete implementovať server WebSocket v jazyku C#, musíte použiť externú knižnicu. Na dosiahnutie rovnakého výsledku v jazyku Java sa využívajú výhody technológie zahrnutej v štandardnej knižnici pomocou balíka javax.websocket, počnúc Java EE 7.
Vytvorte klientsky projekt Java WebSocket založený na Java EE 7 pomocou jedného z bezplatných online prostredí IDE, napríklad Eclipse a NetBeans. NetBeans vytvára novú webovú aplikáciu a nevyhnutne používa GlassFish ako server (verzia 4.0). Ak používateľ uprednostňuje použitie Eclipse, bude si musieť zvoliť Tomcat 8. Definujú teda balík, ktorý sa dá nazvať MyServer, a v ňom vytvoria triedu servera WebSocket. Kód na implementáciu servera je celkom čitateľný a jeho správanie je ľahké pochopiť.

Výhody webovej zásuvky
WS rieši niekoľko problémov s odpočinkom alebo HTTP. HTTP je jednosmerný protokol, v ktorom klient vždy iniciuje požiadavku. Server spracuje a vráti odpoveď a potom ju klient použije. Websocket je obojsmerný protokol, ktorý nemá preddefinované vzory správ, ako napríklad žiadosť/odpoveď. Klient alebo server môžu poslať správu druhej strane.
HTTP umožňuje, aby správa s požiadavkou prešla z klienta na server a potom odošle odpoveď. V určitom okamihu klient komunikuje so serverom alebo naopak. Pre požiadavku HTTP sa zvyčajne iniciuje nové pripojenie TCP a ukončí sa po prijatí reakcia. Pre ďalšiu požiadavku/odpoveď HTTP musí byť vytvorené nové pripojenie TCP.
Pre WS sa pripojenie HTTP aktualizuje pomocou štandardného aktualizačného mechanizmu. Klient a server si vymieňajú údaje cez rovnaké pripojenie TCP v rámci životného cyklu pripojenia WS.
Websocket je protokol nízkej úrovne. Všetko vrátane jednoduchej šablóny žiadosti/odpovede, spôsobov vytvárania, aktualizácie, odstraňovania potrebných zdrojov a stavových kódov. Všetky sú starostlivo definované pre HTTP.
WS je stavový protokol, zatiaľ čo HTTP je protokol bez štátnej príslušnosti.
Mierka škálujte pripojenia WS vertikálne na jednom serveri, zatiaľ čo HTTP sa môže škálovať horizontálne. Existuje niekoľko patentovaných riešení pre horizontálne škálovanie, ale nie sú založené na normách.
HTTP prichádza s mnohými ďalšími výhodami, ako je ukladanie do vyrovnávacej pamäte, smerovanie a multiplexovanie. To všetko by malo byť definované na vrchole WebSocket a Java databázy.