Java Websocket Tomcat (projekt maven)

Wreszcie serwer komukuje się z przeglądarką …
do tej pory aplikacje bazujące na HTML komunikowały się z serwerem synchronicznie: zapytanie i odpowiedź.
Jeśli serwer potrzebował więcej czasu na wykonanie zadania to można było czekać (bardzo nieefektywne) albo dokonywać co pewien czas zapytań o stan procesu (ang. polling; skomplikowana metoda).
Od pewnego czasu możemy używać WebSocket czyli komunikować się dwukierunko za pośrednictwem jednego gniazda TCP. Prosto ujmując: serwer, po ustaleniu połączenia, może notyfikować klienta o zmianach (wysyłać do klienta dane; klient jest notyfikowany).

Tomcat 7
przykładowy projekt używa serwera Apache Tomcat 7. Wcześniejsze serwery nie wspierały WebSocket.
Wszystko co należy zrobić aby używać WebSocket to utworzyć Servlet , który to będzie dziedziczył po
org.apache.catalina.websocket.WebSocketServlet
W moim testowym projekcie jest to:
de.albgorski.test.websocket.WebsocketServlet
W klasie serwletu implementujemy metodę createWebSocketInbound. Metoda ta tworzy nową instancję MessageInbound dla każdego polączenia – ważne jest więc aby była bezstanowa. MessageInbound obsługuje połączenia WebSocket.

Serwlet po utorzeniu należy zarejestować w pliku konfiguracyjnym web.xml.

HTML5 i JavaScript
Kod klienta to HTML5 i JavaScript. W JavaScript tworzymy obiekt WebSocket, który będzie odpowiedzialny na nawiązanie połączenia i wysyłanie komunikatów do serwera.
W testowym projekcie JavaScript został umieszczony w pliku app-websockets.js.

HTML nie zawiera nic szczególnego: 2 pola do wprowadzenia danych testowych (są opcjonalne).

Projekt
gotowy projekt można ściągnąć z mojego repozytorium GitHub:
https://github.com/agorski/websocket-tomcat7-test
lub za pomocą komendy GIT:
git clone git://github.com/agorski/websocket-tomcat7-test.git

Ponieważ projekt jest utworzony przy pomocy Maven, można w łatwy sposób utworzyć gotowy plik instalacyjny WAR:
mvn clean package

Plik WAR należy skopiować do katalogu webapps serwera Tomcat.
Adres aplikacji to:
localhost:8080/albgorski-websocket-test/index.html

Przyjemnego WebSocket-owania :)

Informacje o @albgorski

Od 1999 roku profesjonalnie zajmuję się rozwijaniem oprogramowania. Głównie Java, ale także Groovy, PHP, HTML, JavaScript oraz Adobe Flex. Fascynują mnie metody wymiany danych, ich przechowywania oraz dostępowania. Jestem WIELKIM zwolennikiem Clean Code, TDD oraz agilistą (może lepiej lean-istą). Ekosystem Java dostarcza WIELE świetnych frawework-ów i bibliotek, a społeczność miłośników języka Java jest najlepsza pod słońcem :)
Ten wpis został opublikowany w kategorii html, java, maven, web i oznaczony tagami , , , , , . Dodaj zakładkę do bezpośredniego odnośnika.

Możliwość komentowania jest wyłączona.