如何在我的Java Web App中运行websocket客户端

时间:2014-08-07 22:25:50

标签: java jsp servlets web-applications websocket

我需要运行一个Java websocket客户端来监听来自另一个第三方websocket服务器的更新。

客户端需要作为Java webapp的一部分进行部署。

要求是客户端必须持续监听更新。

这样做的正确方法是什么?

我正在考虑从servlet调用所述java代码。这是推荐的吗?

编辑:我有websocket的代码(我正在使用Tyrus),但我对将它链接到我的webapp的正确方法感到困惑。即,如何确保websocket连续运行。

2 个答案:

答案 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();
     }
 }