Ja zwykle TechRepublic daje wiele wiadomości o aktualnych trendach w aplikacjach webowych – http://www.techrepublic.com/blog/programming-and-development/websocket-offers-a-new-approach-to-web-development/5707. Mimo powszechności stosowania protokołu HTTP coraz częściej w wyspecjalizowanych zastosowaniach korzysta się z gniazd (socket). Gniazda są niskopoziomowe i teoretycznie można oczekiwać większej wydajności i szybkości komunikacji. Co jeszcze daje gniazdko:
- działa na protokole TCP
- wymiana danych m. klientem a serwerem odbywa się w czasie rzeczywistym w dwie strony bez konieczności odbycia tradycyjnego przebiegu żądanie/odpowiedź (odpytywanie z potwierdzeniem)
- nie wymaga odpytywania okresowego serwera czy ma już odpowiedź
Dostęp do gniazd to nieodłączna część bibliotek języka C i Java (uwaga rok 1996 – http://www.javaworld.com/jw-12-1996/jw-12-sockets.html?page=2). Cała grupa języków dynamicznych też je ma. Ostatnio doszedł JavaScript (oczywiście osadzony w przeglądarce dlatego ważne wiedzieć o wsparciu – http://caniuse.com/websockets) i to drogą pośrednią poprzez wprowadzenie standardu HTML5 za pomocą WebSockets. Dzięki temu stał się pełnoprawnym klientem gniazdkowym. Żeby tego było mało to od dwóch może lat istnieje biblioteka node.js. Można też stworzyć niezależny serwer na bazie – http://socket.io/#how-to-use. Biblioteka Socket.IO jest dostępna dla różnych języków np. C# – https://socketio4net.codeplex.com/, C++ – https://github.com/ebshimizu/socket.io-clientpp, Java czy Android. Są też slajdy – https://github.com/learnboost/socket.io/wiki. Jest nawet przykład gry – http://krasimirtsonev.com/blog/article/Real-time-chat-with-NodeJS-Socketio-and-ExpressJS
Ponieważ protokół gniazdkowy jest standardem to pojawiają się ciekawe kombinacje zastosowania tej technologii, np. klient w C++ a serwer postawiony na C# lub JS. Zarówno klienty i serwer mogą być implementowane w różnych technologiach!
Skomentuj