web-dev-qa-db-ja.com

Best Java socket.ioのサーバー実装

socket.io を使用してサーバーからブラウザにデータをプッシュしたかったのですが、プロジェクトはJava Tomcatであり、socket.ioのサーバー実装の場合、Github。それらのほとんどは、deprecatedまたはより良いものが利用可能です。誰も私に良い実装を提案することができます。

そして、socket.ioでのブロードキャストに関するデモとサンプルコードがたくさんあります。私の要件は、異なるメッセージを異なるクライアントにプッシュすることです。誰かがそのようなものを扱う良いデモやチュートリアルを教えてくれますか?

ありがとう

36
Jiby Jose

著者として、JavaでSocketIOサーバーの実装を試すことをお勧めします。

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

安定した本番用のライブラリ。

47

本番環境では Socket.IO-Java を使用しています。要件に応じてカスタマイズしています。しかし、主なケースでは十分に機能します。

同僚が github でカスタマイズされたバージョンを共有しました。 Jetty 8を使用していますが、別のサーブレットコンテナに問題がある可能性があります。また、XPがMicrosoftによってサポートされない場合、WebSocketのみの実装を使用することを検討します。

6
Taky

これを試すことができます: https://github.com/codeminders/socket.io-server-Java

この実装は、他の回答で言及された古いSocket.IO-Javaライブラリに大まかに基づいています。

Socket.IO 1.0+クライアントをサポートします。 websocketトランスポートはJetty 9で実装されていますが、ライブラリのコア部分についてJettyに依存するものはありません。必要に応じて、Tomcatでwebsocketトランスポートを実装することはそれほど難しくないはずです。

Node.JS Socket.IOサーバーAPIと同様のAPIを維持しようとしました。したがって、特定のソケットにメッセージを送信するには、socket.emit()を呼び出すだけです。

次に、SocketIOサーブレットで呼び出される小さなコードフラグメントを示します。

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