我需要运行一个Java websocket客户端来监听来自另一个第三方websocket服务器的更新。
客户端需要作为Java webapp的一部分进行部署。
要求是客户端必须持续监听更新。
这样做的正确方法是什么?
我正在考虑从servlet调用所述java代码。这是推荐的吗?
编辑:我有websocket的代码(我正在使用Tyrus),但我对将它链接到我的webapp的正确方法感到困惑。即,如何确保websocket连续运行。
答案 0 :(得分:1)
我会把它变成一个单独的类。如果您想在应用程序运行时连接并持续监听,您可能需要在应用程序启动时启动的单独线程中运行它。
线程和并发性是一个非常深的兔子洞的开始,但像ThreadPoolExecutor这样的单线程可能会起作用。
从那里开始,如果您正在运行Jetty嵌入式主要方法中的Executor逻辑;如果您将其作为.war运行,则必须将其配置为在Web应用程序启动时运行。
答案 1 :(得分:0)
您可以使用org.eclipse.jetty.websocket:websocket-client
WebSocketClient client = new WebSocketClient();
SimpleEchoSocket socket = new SimpleEchoSocket();
try {
client.start();
URI echoUri = new URI(destUri);
ClientUpgradeRequest request = new ClientUpgradeRequest();
client.connect(socket, echoUri, request);
System.out.printf("Connecting to : %s%n", echoUri);
socket.awaitClose(5, TimeUnit.SECONDS);
} catch (Throwable t) {
t.printStackTrace();
} finally {
try {
client.stop();
} catch (Exception e) {
e.printStackTrace();
}
}