我需要运行一个Java websocket客户端,侦听来自另一个第三方websocket服务器的一些更新。
客户端需要作为Java webapp的一部分部署。
要求客户端必须连续侦听更新。
正确的方法是什么?
我正在考虑从servlet调用上述java代码。推荐吗?
编辑:我有websocket的代码(我使用Tyrus),但我对将其链接到我的webapp的正确方法感到困惑。例如,如何确保websocket持续运行。
我会把它设为一个单独的类。如果您希望在应用程序运行时连接并持续侦听,则可能需要在应用程序启动时启动的单独线程中运行它。
线程和并发性是一个相当深的兔子洞的开始,但是像ThreadPoolExecutor这样的单线程可能会工作。
从那里,如果你正在运行Jetty嵌入式stick Executor逻辑在你的主方法;如果你以.war的形式运行它,你必须将它配置为在web应用程序启动时运行。
您可以使用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();
}
}
- 阅读更多