Spring4.3.3 WebSocket-STOMP协议集成 (2.1)-WebSocket-stomp子协议通讯小栗子
来源:互联网 发布:软件开发流程模版 编辑:程序博客网 时间:2024/05/15 06:50
上一篇中说到:stomp - jsp之间的通讯,是通过stomp,socket.js/stomp.js实现的通讯。如果觉得写jsp或者js麻烦,或者不怎么会js,不是太懂,可以用webSocketStomp的client来测试。下面看代码:
pom.xml依赖:
<!-- stompclient test--><dependency> <groupId>org.glassfish.tyrus.bundles</groupId> <artifactId>tyrus-standalone-client</artifactId> <version>1.13</version></dependency>
JunitTest方法如下:具体和WebSocket的junit相似,不多解释了,老衲告退....
/** * 连接js endpoint端点 * @throws ExecutionException * @throws InterruptedException *///@Testpublic void testSocketJsEndpoint() throws InterruptedException, ExecutionException {//js urlString jsUrl = "ws://localhost:18080/JeeSite/hello";//for js endpoint wrapList<Transport> transports = Lists.newArrayList();transports.add(new WebSocketTransport(new StandardWebSocketClient()));WebSocketClient transport = new SockJsClient(transports);//js endpoint endWebSocketStompClient stompClient = new WebSocketStompClient(transport);stompClient.setMessageConverter(new StringMessageConverter());//stompsession 使用必须配置ReceiptableThreadPoolTaskScheduler task = new ThreadPoolTaskScheduler();task.initialize();stompClient.setTaskScheduler(task);StompSessionHandler sessionHandler = new MyStompSessionHandler();ListenableFuture<StompSession> ret = stompClient.connect(jsUrl, sessionHandler);ret.addCallback(new ListenableFutureCallback<StompSession>() {@Overridepublic void onSuccess(StompSession session) {session.subscribe("/app/subscribeme", new StompFrameHandler() {@Overridepublic void handleFrame(StompHeaders headers, Object payload) {System.out.println(payload);}@Overridepublic Type getPayloadType(StompHeaders headers) {return String.class;}});session.subscribe("/topic/hi", new StompFrameHandler() {@Overridepublic void handleFrame(StompHeaders headers, Object payload) {System.out.println("subscribe message : ");System.out.println(payload);}@Overridepublic Type getPayloadType(StompHeaders headers) {return Object.class;}});}@Overridepublic void onFailure(Throwable ex) {ex.printStackTrace();}});StompSession sess = ret.get();//跟踪发送消息返回状态,必须启用该项sess.setAutoReceipt(true);Receiptable recpt = sess.send("/app/hi", "i'm js monkey stanthem.");recpt.addReceiptTask(new Runnable() {@Overridepublic void run() {System.out.println("js endpoint send msg success.");} });}/** * java stomp client 连接client 端点。 * @throws InterruptedException * @throws ExecutionException *///@Testpublic void testStompClientEndpoint() throws InterruptedException, ExecutionException {String clientUrl = "ws://localhost:18080/JeeSite/client";WebSocketClient client = new StandardWebSocketClient();WebSocketStompClient stompClient = new WebSocketStompClient(client);stompClient.setMessageConverter(new StringMessageConverter());stompClient.setReceiptTimeLimit(300);//配置心跳频率,默认就是下面这个间隔stompClient.setDefaultHeartbeat(new long[]{10000l,10000l});//stompsession 使用必须配置Receiptable, taskScheduler作用是//Configure a scheduler to use for heartbeats and for receipt tracking.//为配置心跳频率和跟踪发送状态 准备的线程池ThreadPoolTaskScheduler task = new ThreadPoolTaskScheduler();task.initialize();stompClient.setTaskScheduler(task);StompSessionHandler sessionHandler = new MyStompSessionHandler();ListenableFuture<StompSession> ret = stompClient.connect(clientUrl, sessionHandler);ret.addCallback(new ListenableFutureCallback<StompSession>() {@Overridepublic void onSuccess(StompSession session) {session.subscribe("/app/subscribeme", new StompFrameHandler() {@Overridepublic void handleFrame(StompHeaders headers, Object payload) {System.out.println("subscribe message : ");System.out.println(payload);}@Overridepublic Type getPayloadType(StompHeaders headers) {return String.class;}});session.subscribe("/topic/hi", new StompFrameHandler() {@Overridepublic void handleFrame(StompHeaders headers, Object payload) {System.out.println(payload);}@Overridepublic Type getPayloadType(StompHeaders headers) {return Object.class;}});}@Overridepublic void onFailure(Throwable ex) {ex.printStackTrace();}});StompSession sess = ret.get();//跟踪发送消息返回状态,必须启用该项sess.setAutoReceipt(true);//发一个消息Receiptable recpt = sess.send("/app/hi", "i'm java stomp client monkey stanthem.");recpt.addReceiptTask(new Runnable() {@Overridepublic void run() {System.out.println("java client endpoint send msg success.");} });}
class MyStompSessionHandler extends StompSessionHandlerAdapter {@Overridepublic void afterConnected(StompSession session, StompHeaders connectedHeaders) {Map<String, String> headers = connectedHeaders.toSingleValueMap();for (Entry<String, String> kv : headers.entrySet()) {System.out.println(kv.getKey() + " - " + kv.getValue());}System.out.println("connected session : "+session.getSessionId());}}
0 0
- Spring4.3.3 WebSocket-STOMP协议集成 (2.1)-WebSocket-stomp子协议通讯小栗子
- Spring4.3.3 WebSocket-STOMP协议集成 (2)-WebSocket-stomp子协议通讯小栗子
- Spring4.3.3 WebSocket-STOMP协议集成 (1)-WebSocket协议通讯小栗子
- Spring4.3.3 WebSocket-STOMP协议集成 (1.1)-WebSocket协议通讯小栗子
- stomp over websocket协议原理与实现
- SpringBoot的WebSocket基于STOMP协议自动广播推送配置
- stomp协议
- WebSocket与STOMP介绍
- STOMP Over WebSocket原文
- Spring websocket stomp
- STOMP-WebSocket中文文档
- WebSocket+STOMP+SockJS
- websocket 、stomp关系
- spring4 集成STOMP
- Spring websocket over STOMP使用指南
- ANDROID WebSocket+STOMP 1.0版本
- 搭建Spring4.1与Spring4.2 websock+stomp+activeMQ需要注意事项:spring4不同版本websocket差异
- STOMP协议介绍
- JSPatch-实现原理详解
- Linux-Shell基础
- S5PV210外部中断
- C语言-余弦
- Maven3 安装使用(二)
- Spring4.3.3 WebSocket-STOMP协议集成 (2.1)-WebSocket-stomp子协议通讯小栗子
- js运动实例-淘宝幻灯片
- 数组、指针与字符串
- Oracle-11g学习3 - grad安装1
- 如何捕获未捕获的异常
- 1592 Database
- 用boost::thread起一个线程
- 接受短信广播,需要给广播接收者添加的action
- 网页加速的14条法则