java – 如何等待Spring WebSocketStompClient连接
发布时间:2020-12-15 04:35:39 所属栏目:Java 来源:网络整理
导读:我使用 this guide来实现一个简单的Stomp客户端: WebSocketClient webSocketClient = new StandardWebSocketClient();WebSocketStompClient stompClient = new WebSocketStompClient(webSocketClient);ThreadPoolTaskScheduler taskScheduler = new ThreadP
我使用
this guide来实现一个简单的Stomp客户端:
WebSocketClient webSocketClient = new StandardWebSocketClient(); WebSocketStompClient stompClient = new WebSocketStompClient(webSocketClient); ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler(); taskScheduler.afterPropertiesSet(); stompClient.setTaskScheduler(taskScheduler); // for heartbeats stompClient.setMessageConverter(new StringMessageConverter()); StompSessionHandler sessionHandler = new MySessionHandler(); stompClient.connect("ws://server/endpoint",sessionHandler); // WAITING HERE 当连接完成时,它应该异步向MySessionHandler报告: public class MySessionHandler extends StompSessionHandlerAdapter { @Override public void afterConnected(StompSession session,StompHeaders connectedHeaders) { // WAITING FOR THIS } } 所以问题是:在这里等待等待线路的线路如何等待?是否有一种特定的Spring方式来做到这一点?如果没有,哪种通用Java方式最适合这里? 解决方法
也许
java.util.concurrent.CountDownLatch 可以像这样解决你的问题:
CountDownLatch latch = new CountDownLatch(1); StompSessionHandler sessionHandler = new MySessionHandler(latch); stompClient.connect("ws://server/endpoint",sessionHandler); // wait here till latch will be zero latch.await(); 和你的MySessionHandler实现: public class MySessionHandler extends StompSessionHandlerAdapter { private final CountDownLatch latch; public MySessionHandler(final CountDownLatch latch) { this.latch = latch; } @Override public void afterConnected(StompSession session,StompHeaders connectedHeaders) { try { // do here some job } finally { latch.countDown(); } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Map集合的四种遍历方式代码示例
- Mybatis 中的<![CDATA[ ]]>浅析
- Junit单元测试数据生成工具类
- java – 如何更改JOptionPane.showInputDialog中按钮的默认
- java.lang.UnsatisfiedLinkError:由于库未加载,未找到任何
- java – ORA-24816:在实际LONG或LOB列之后提供的扩展非LON
- java – 哪种实现更好:基于WeakHashMap的缓存还是基于Thre
- java – 如果else语句有4个结果,但只有2个似乎工作
- java之从命令行获取数据的三种方式
- java – Kafka Connect实现错误