Java サーバーはデータをアクティブにプッシュする方法は何ですか?

Javaサーバーは、データをアクティブにプッシュするためにWebSocketを使用できます。WebSocketは、単一のTCP接続で全二重通信が可能なプロトコルであり、クライアントとサーバーの間でデータをリアルタイムに交換できます。

まず、Javaサーバー上にWebSocketサーバーを作成する必要があります。JavaライブラリのJava WebSocket APIを使用して実装できます。以下は簡単な例です:

import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;

@ServerEndpoint("/websocket")
public class WebSocketServer {

    @OnOpen
    public void onOpen(Session session) {
        System.out.println("WebSocket opened: " + session.getId());
    }

    @OnMessage
    public void onMessage(String message, Session session) throws IOException {
        System.out.println("Received message from client: " + message);
        session.getBasicRemote().sendText("Hello client!");
    }

    @OnClose
    public void onClose(Session session) {
        System.out.println("WebSocket closed: " + session.getId());
    }

    @OnError
    public void onError(Throwable error) {
        System.err.println("WebSocket error: " + error.getMessage());
    }
}

その後、クライアントサイドでJavaScriptや他の言語のWebSocket APIを使用してサーバーと通信することができます。WebSocketを使用してサーバーにメッセージを送信し、サーバーからのメッセージを受信することができます。

以下はJavaScriptを使用した簡単な例です:

var socket = new WebSocket("ws://localhost:8080/websocket");

socket.onopen = function() {
    console.log("WebSocket opened");
    socket.send("Hello server!");
};

socket.onmessage = function(event) {
    console.log("Received message from server: " + event.data);
};

socket.onclose = function() {
    console.log("WebSocket closed");
};

socket.onerror = function(error) {
    console.error("WebSocket error: " + error);
};

上記の例では、WebSocket接続が成功するとサーバーにメッセージが送信されます。 サーバーはメッセージを受け取った後、クライアントに回答メッセージを送信します。

このようにすると、サーバーはクライアントにデータをアクティブにプッシュできます。サーバー側のどこからでも、session.getBasicRemote().sendText()メソッドを呼び出してクライアントにメッセージを送信することができます。

bannerAds