JAVA中webSocket应用

1.应用背景

现在去京东、菜鸟等平台拿快递面单,需用运用他们云打印组件,发送WebSocket指令进行快递面单打印,如下就是对webSocket简单应用。

2.导入jar包

<dependency>
       <groupId>org.java-websocket</groupId>
       <artifactId>Java-WebSocket</artifactId>
       <version>1.3.0</version>
</dependency>

3.进行webSocket工具类的编写

connectWS方法主要是进行webSocket链接,一般情况可以直接使用sendMsg方法进行连接和发送信息

@Slf4j
@Service
public class MyWSClientUtils {

    @Value("${websocket.message.size}")
    private Integer messageSize;

    @Value("${websocket.connect.time}")
    private Integer connectTime;


    private static String HEARTBEAT="ping";
    private static Cache<String, Session> wsCache = CacheBuilder.newBuilder()
            .initialCapacity(3)
            .expireAfterWrite(10, TimeUnit.HOURS) //10h 防止无用的session
            .build();

    /**
     * @param uri "ws://192.168.18.51:7206/websocket/001/Sea/1"
     */
    public synchronized Session connectWS(String uri){
        Session sessionInCache = wsCache.getIfPresent(uri);
        if(sessionInCache!=null&&sessionInCache.isOpen()){return sessionInCache;}
        try{
            if(sessionInCache!=null){sessionInCache.close();}
            log.info("start connect ws : {}",uri);
            WebSocketContainer container = ContainerProvider.getWebSocketContainer();
            //设置消息大小最大为500KB
            container.setDefaultMaxBinaryMessageBufferSize(messageSize);
            container.setDefaultMaxTextMessageBufferSize(messageSize);
            // 客户端,开启服务端websocket。
            Session session = container.connectToServer(WSClientHandler.class,URI.create(uri));
            session.setMaxIdleTimeout(connectTime);// 60S
            session.getBasicRemote().sendText(HEARTBEAT);
            wsCache.put(uri,session);
            return  session;
        } catch (Exception ex) {
            ex.printStackTrace();
            log.warn("c出错了 connect ws:{} exp:{}",uri,ex);
        }
        return  null;
    }

    /**
     * @param msg
     * @param uri : "ws://192.168.18.51:7206/ws/001/xx/1"
     * @return
     */
    public Boolean sendMsg(String msg,String uri) {
        try
        {
            Session session = connectWS(uri);
            session.getBasicRemote().sendText(msg);
            return true;
        }catch (Exception e){
            log.error("send msg exp:{}",e);
            return false;
        }
    }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值