Java:WebSocketクライアントを作成する
JavaアプリをWebSocketクライアントにしてみる。前提条件としては、既にWebSocketサーバが存在するものとする。これには様々なやり方があり、例えばJettyのwebsocket-clientを使ってJetty独自のAPIを使うこともできるのだが、ここでは標準のjavax.websocket-APIを使う方法にする。
tyrus-standaloneライブラリの取り込み
Gradleの場合、以下の一行を入れればよい。
implementation group: 'org.glassfish.tyrus.bundles', name: 'tyrus-standalone-client', version: '1.15'
クライアントコード
ウェブソケットのクライアント。
import javax.websocket.*;
@ClientEndpoint
public class EchoClient {
@OnOpen
public void onOpen(Session session) {
System.out.println("onOpen:" + session);
try {
session.getBasicRemote().sendText("sample text");
} catch (Exception ex) {
ex.printStackTrace();
}
}
@OnMessage
public void onMessage(String message) {
System.out.println("onMessge:" + message);
}
@OnError
public void onError(Throwable th) {
System.out.println("onError:" + th.getMessage());
}
@OnClose
public void onClose(Session session) {
System.out.println("onClose:" + session);
}
}
接続
後は以下のように接続する。URIはあくまでも例。
import javax.websocket.*;
.....
URI uri = URI.create("ws://localhost:8080/ws/echo");
WebSocketContainer container = ContainerProvider.getWebSocketContainer();
Session session = container.connectToServer(new EchoClient(), uri);