2013-03-22 32 views
32

chciałem użyć socket.io do pchania danych z serwera do przeglądarki, ale projekt jest java tomcat jeden, i istnieje wiele realizacja w Github do wdrożenia serwera socket.io. Większość z nich twierdzi, że są one przestarzałe lub lepsze są dostępne. Każdy może zaproponować mi dobrą implementację.Najlepsza implementacja serwera Java dla socket.io

I widzę wiele demo i przykładowy kod o emisji z socket.io. Moim wymaganiem jest przekazywanie różnych wiadomości do różnych klientów. Czy ktoś może wskazać mi jakieś dobre demo lub samouczek dotyczący takich rzeczy?

Dzięki

+0

ile tylko szukasz wykonania Java socket-io jest ich wiele, ale ich obsługa wielu kontenerów nie jest dobra.Tak, do wyboru podjąłem się z atmosferą, To daje możliwość użycia gniazda io jako lirary lub ich i innych i obsługuje większość z kontenerów na zewnątrz. Wydaje się, że jest to aktywnie opracowany projekt i poleciłbym go każdemu w tej samej sytuacji, w której wykonywałbym kometę w java –

+0

możliwy duplikat [jak zaimplementować Socket.io na Tomcat 7] (ht tp: //stackoverflow.com/questions/12299194/how-to-implement-socket-io-on-tomcat-7) –

Odpowiedz

40

Jako autor, proponuję spróbować swoich implementację serwera SocketIO na Java:

https://github.com/mrniko/netty-socketio

stabilny i produkcji gotowych lib.

+1

Netty-socketio tworzy swój własny serwer lub mogę go używać wewnątrz aplikacji Tomcat, na przykład ? –

+0

@ DanielT.Sobrosa Oczywiście! –

+0

@NikitaKoksharov Witam, czy istnieje formalna dokumentacja dla netty-socketio, którą mógłbym wykorzystać jako punkt odniesienia podczas budowania mojego oprogramowania? –

4

Używamy produkcji tego: Socket.IO-Java. Dostosowaliśmy go do naszych wymagań. Ale w głównym przypadku działa wystarczająco dobrze.

Moja koleżanka udostępniła dostosowaną wersję w github. Używamy Jetty 8, może być jakiś problem z innymi kontenerami serwletów. Zastanawiamy się również nad implementacją tylko WebSocket, gdy XP nie będzie wspierany przez Microsoft.

+0

Hej, dzięki za odpowiedź sprawdziłem wiele z tych java backendów. Ale większość z nich była specyficzna dla jakiś pojemnik, taki jak ten, który wskazałeś, był dla jetty. Skorzystałem z możliwości wyboru atmosfery. –

+1

Link jest martwy. Czy możesz gdzieś udostępnić swoją dostosowaną wersję? (github być może) Dokumentacja projektu mówi, że jest porzucona, a twoje zmiany mogą być tym czego brakowało :) – naugtur

+2

@naugtur Dodałem link do repo – Taky

1

Możesz spróbować tego: https://github.com/codeminders/socket.io-server-java

Ta implementacja jest luźno oparta na starej biblioteki Socket.IO-Java wspomniano w innych odpowiedzi.

Obsługuje klientów Socket.IO 1.0+. Transport websocket jest realizowany za pomocą Jetty 9, ale nie ma zależności od Jetty dla głównej części biblioteki. W razie potrzeby nie powinno być bardzo trudno zaimplementować transport sieciowy z Tomcat.

Próbowałem zachować API podobne do interfejsu API serwera Node.JS Socket.IO. Tak więc, aby wysłać wiadomość do konkretnego gniazda wystarczy zadzwonić socket.emit()

Oto mały fragment kodu na miano w SocketIO serwletu:

on(new ConnectionListener() { 
     public void onConnect(Socket socket) 
     { 
      try 
      { 
       socket.emit("welcome", "Welcome to Socket.IO Chat!"); 
      } 
      catch (SocketIOException e) 
      { 
       socket.disconnect(true); 
      } 
     } 
});