2013-03-22 7 views
32

Ich wollte socket.io verwenden, um Daten drücken vom Server zum Browser, aber das Projekt ist java tomcat ein, und es gibt viele Implementierung in Github für die Server-Implementierung von socket.io. Die meisten von ihnen sagen, sie sind veraltet oder bessere sind verfügbar.Kann jemand eine gute Umsetzung vorschlagen.besten Java-Server-Implementierung für socket.io

Und ich sehe viel Demo und Beispielcode über das Senden mit socket.io. Meine Anforderung besteht darin, verschiedene Nachrichten an verschiedene Clients zu senden. Könnte mich jemand auf ein gutes Demo oder Tutorial hinweisen, das sich mit solchen Dingen beschäftigt?

Dank

+0

Was gerade auf der Suche für eine Java-Implementierung von Socket-io gibt es viele, aber ihre Unterstützung für viele Container ist nicht gut. Die Wahl, die ich nahm, war mit Atmosphäre zu gehen, gibt es die Option, Socket io als die Lire oder ihre und einige andere zu verwenden, und es unterstützt die meisten von den Containern da draußen.Es scheint ein aktiv entwickeltes Projekt zu sein, und ich würde es jedem empfehlen, der sich in der gleichen Situation befindet, in der Komet in Java gemacht wird –

+0

mögliches Duplikat von [wie man Socket.io auf Tomcat 7 implementiert] (ht tp: //stackoverflow.com/questions/12299194/how-to-implement-socket-io-on-tomcat-7) –

Antwort

40

Als Autor, schlage ich meine SocketIO-Server-Implementierung auf Java, um zu versuchen:

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

Stabile und Produktion bereit lib.

+1

Netty-socketio erstellt seinen eigenen Server oder ich kann es zum Beispiel in einer Tomcat-Anwendung verwenden ? –

+0

@ DanielT.Sobrosa Natürlich! –

+0

@NikitaKoksharov Hallo, gibt es eine formelle Dokumentation für netty-socketio, die ich als Referenz verwenden könnte, während ich meine Software darauf aufbaue? –

4

Wir sind diese in der Produktion: Socket.IO-Java. Wir haben es nach unseren Anforderungen anpassen. Aber im Hauptfall funktioniert es gut genug.

Mein Kollege hat angepasste Version in github geteilt. Wir verwenden Jetty 8, da es Probleme mit anderen Servlet-Containern geben kann. Wir ziehen auch die Verwendung der WebSocket-Implementierung in Betracht, wenn XP nicht von Microsoft unterstützt wird.

+0

Hey danke für die Antwort Ich habe viele dieser Java-Backends überprüft. Aber die meisten von ihnen waren spezifisch für ein Container wie der, auf den du hingewiesen hast, war für den Anlegesteg. Ich nahm die Wahl, um mit der Atmosphäre zu gehen –

+1

Link ist tot. Könnten Sie Ihre angepasste Version irgendwo teilen? (Github vielleicht) Die Dokumentation des Projekts sagt, es ist aufgegeben und Ihre Änderungen könnten sein, was es gefehlt hat :) – naugtur

+2

@naugtur Ich habe einen Link zu Repo hinzugefügt – Taky

1

Sie können versuchen, diese ein: https://github.com/codeminders/socket.io-server-java

Diese Implementierung basiert lose auf alte Socket.IO-Java-Bibliothek in anderen Antworten erwähnt.

Es unterstützt Socket.IO 1.0+ Clients. Der Websocket-Transport wird mit Jetty 9 implementiert, aber es besteht keine Abhängigkeit von Jetty für den Kernteil der Bibliothek. Es sollte nicht sehr schwierig sein, den Websockettransport mit Tomcat bei Bedarf zu implementieren.

Ich habe versucht, die API ähnlich Node.JS Socket.IO-Server-API zu halten. Also, eine Nachricht an spezifischen Buchse senden alles, was Sie brauchen, ist zu nennen socket.emit()

Hier ist ein kleines Codefragment in Ihrem SocketIO Servlet aufgerufen werden:

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