123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- package com.xc.utils.websocket;
- import com.alibaba.fastjson.JSONObject;
- import com.xc.controller.websocket.WebSocketController;
- import com.xc.service.InitStockListService;
- import com.xc.utils.PropertiesUtil;
- import com.xc.vo.stock.StockVO;
- import org.apache.commons.lang3.StringUtils;
- import org.java_websocket.WebSocket;
- import org.java_websocket.client.WebSocketClient;
- import org.java_websocket.handshake.ServerHandshake;
- import java.math.BigDecimal;
- import java.net.URI;
- import java.util.ArrayList;
- import java.util.List;
- public class WsClient extends WebSocketClient {
- private static WsClient instance ;
- static InitStockListService initStockListServiceBiz;
- /**
- * 单例
- */
- public static WsClient getInstance(InitStockListService initStockListService) {
- initStockListServiceBiz=initStockListService;
- return instance;
- }
- public static WsClient getThis() {
- return instance;
- }
- public WsClient(URI serverUri) {
- super(serverUri);
- instance = this;
- }
- @Override
- public void onOpen(ServerHandshake arg0) {
- System.out.println(arg0);
- System.out.println("握手成功");
- }
- @Override
- public void onClose(int arg0, String arg1, boolean arg2) {
- if(arg0==1006||arg0==1001){
- Thread thread=new Thread(new Runnable() {
- @Override
- public void run() {
- try {
- boolean b = false ;
- while(!b){
- try {
- String url = PropertiesUtil.getProperty("ws.url");
- WsClient myClient = new WsClient(new URI(url));
- myClient.connect();
- Thread.sleep(5000);
- if(myClient.getReadyState().equals(WebSocket.READYSTATE.OPEN)){
- b = true;
- System.out.println("订阅成功555");
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }catch (Exception e){
- e.printStackTrace();
- }
- }
- });
- thread.start();
- }
- }
- @Override
- public void onError(Exception arg0) {
- System.out.println(arg0.toString());
- }
- /**
- * 订阅返回的数据
- * @param arg0
- */
- @Override
- public void onMessage(String arg0) {
- try {
- if(StringUtils.isNotBlank(arg0)){
- if(arg0.contains("testws")){
- System.out.println(arg0);
- }
- // 存储信息至redis
- JSONObject parse = (JSONObject) JSONObject.parse(arg0);
- StockVO stockVO = new StockVO();
- stockVO.setId(parse.getInteger("id"));
- stockVO.setName(parse.getString("name"));
- stockVO.setCode(parse.getString("code"));
- stockVO.setSpell(parse.getString("spell"));
- stockVO.setGid(parse.getString("gid"));
- stockVO.setNowPrice(parse.get("nowPrice")+"");
- stockVO.setHcrate(new BigDecimal(parse.get("hcrate")+""));
- stockVO.setToday_max(parse.get("today_max")+"");
- stockVO.setToday_min(parse.get("today_min")+"");
- stockVO.setBusiness_balance(parse.get("business_balance")+"");
- stockVO.setBusiness_amount(parse.get("business_amount")+"");
- stockVO.setPreclose_px(parse.get("preclose")+"");
- stockVO.setOpen_px(parse.get("open")+"");
- stockVO.setTransState(parse.getInteger("transState"));
- stockVO.setDepositAmt(parse.getInteger("depositAmt"));
- stockVO.setMinImg(parse.getString("minImg"));
- stockVO.setDayImg(parse.getString("dayImg"));
- stockVO.setWeekImg(parse.getString("weekImg"));
- stockVO.setMonthImg(parse.getString("monthImg"));
- stockVO.setChange(parse.get("change")+"");
- List<StockVO> stockVOList = new ArrayList<>();
- stockVOList.add(stockVO);
- initStockListServiceBiz.updateListInfo(stockVOList);
- initStockListServiceBiz.updateInfo(stockVO);
- // 处理数据 并 推送给 客户
- new WebSocketController().sendSysMsg("all",arg0);
- }
- }catch (Exception e){
- }
- }
- public void closeWebSocket(){
- this.onClose(1,"",true);
- }
- }
|