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()メソッドを呼び出してクライアントにメッセージを送信することができます。