该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
由于项目要开发后台监听stomp ,所以采用spring的websocket来进行模拟前端stomp监听websocket消息,项目连接websocket需要加入验证token,所以就写了此代码。
List transports = new ArrayList<>(2);
transports.add(new WebSocketTransport(new StandardWebSocketClient()));
transports.add(new RestTemplateXhrTransport());
SockJsClient sockJsClient = new SockJsClient(transports);
sockJsClient.setMessageCodec(new Jackson2SockJsMessageCodec());
WebSocketHttpHeaders wh = new WebSocketHttpHeaders();
WebSocketStompClient wsc = new WebSocketStompClient(sockJsClient);
wsc.setReceiptTimeLimit(300);
wsc.setDefaultHeartbeat(new long[] { 10000l, 10000l });
ThreadPoolTaskScheduler task = new ThreadPoolTaskScheduler();
task.initialize();
wsc.setTaskScheduler(task);
StompHeaders connectHeaders = new StompHeaders();
connectHeaders.set(HttpHeaders.AUTHORIZATION,
"xxx");//注入token 请求头
ListenableFuture f = wsc.connect("xxx", wh,
connectHeaders, new MyStompSessionHandler());
logger.info("------------------------------");
StompSession stompSession = null;
try {
stompSession = f.get();
stompSession.setAutoReceipt(true);
} catch (Exception e) {
e.printStackTrace();
}