从WebSocketStompClient设置默认心跳会导致异常

时间:2015-12-11 17:15:07

标签: spring websocket activemq stomp

我们尝试使用WebSocketStompClient连接到使用spring websocket实现的服务器。

我们的客户端是使用spring 4.2.2开发的,当默认心跳未被覆盖时,它可以正常工作。

但是,我希望客户端以2s间隔发送心跳,因此修改了客户端以设置默认心跳。

    WebSocketStompClient stompClient = new WebSocketStompClient(webSocketClient);
    ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
    taskScheduler.afterPropertiesSet();
    long heartbeat[] = {2000, 10000};
    stompClient.setDefaultHeartbeat(heartbeat);
    stompClient.setTaskScheduler(taskScheduler); // for heartbeats, receipts
    String url = "ws://localhost:8080/Notify/app";
    StompSessionHandler handler = new MyStompHandler();
    ListenableFuture<StompSession>session = stompClient.connect(url, handler, "localhost", "8080");

这会导致异常

    Transport Error Connection closed
org.springframework.messaging.simp.stomp.ConnectionLostException: Connection closed
    at org.springframework.messaging.simp.stomp.DefaultStompSession.afterConnectionClosed(DefaultStompSession.java:459)
    at org.springframework.web.socket.messaging.WebSocketStompClient$WebSocketTcpConnectionHandlerAdapter.afterConnectionClosed(WebSocketStompClient.java:353)
    at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter.onClose(StandardWebSocketHandlerAdapter.java:143)
    at org.glassfish.tyrus.core.TyrusEndpointWrapper.onClose(TyrusEndpointWrapper.java:1190)
    at org.glassfish.tyrus.core.TyrusWebSocket.onClose(TyrusWebSocket.java:126)
    at org.glassfish.tyrus.core.frame.CloseFrame.respond(CloseFrame.java:131)

我们使用tyrus客户端1.10,spring websocket 4.2.2(用于websocket客户端)和ActiveMQ 5.11.1作为代理。

我尝试设置不同的心跳值,但所有这些都会导致异常。 当客户端手动指定心跳时,我不确定有什么不同。

有人可以帮忙吗?

感谢。

0 个答案:

没有答案