webSocket接收字节消息

视频


前段时间公司有一个需求要通过相机记录车辆进出场时的视频,但是相机是通过websocket实时传的是一张一张的mjpeg的图片,所以就需要用图片转视频。

  • WebSocket接收二进制数据需要继承BinaryWebSocketHandler类
  • 重写handleBinaryMessage()方法
/**
     * 接收到信息
     */
    @Override
    protected void handleBinaryMessage(WebSocketSession session, BinaryMessage message) throws Exception {
        ByteBuffer payload = message.getPayload();
        byte[] buffer = payload.array();
        // 输出的文件流保存图片至本地
        String timestamp = DateUtils.convertCurDate2Str(DateUtils.FORMAT_YYYYMMDDHHMISSSSS);
        File dir = new File(TIME_PLATE+File.separator+"image"+File.separator);
        if (!dir.exists()){
            dir.mkdirs();
        }
        File file = new File(dir.getAbsolutePath()+File.separator+timestamp+".jpg");
        log.info("创建文件结果:{}",file.createNewFile());
        OutputStream out = new FileOutputStream(file);
        out.write(buffer);
        out.flush();
        out.close();
    }
  • 建立连接后因为推送的是图片,需要设置消息的大小限制。可以通过config类去设置,我是直接在建立连接后设置的。
/**
     * 建立连接以后
     */
    @Override
    public void afterConnectionEstablished(WebSocketSession session) {
        log.info("与相机建立连接,{}:{}",session.getRemoteAddress().getHostString(),session.getRemoteAddress().getPort());
        session.setBinaryMessageSizeLimit(52428800);
        session.setTextMessageSizeLimit(52428800);
        WebSocketCameraHandler.session = session;
    }
  • 断开连接
/**
     * 断开连接以后
     */
    @Override
    public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
        log.info("与相机断开链接:{},原因:{},大小:{}",System.currentTimeMillis(),status.getReason(),session.getBinaryMessageSizeLimit());
    }
  • 连接webSocket
StandardWebSocketClient client = new StandardWebSocketClient();
//finalUrl:示例:ws://127.0.0.1:9999/ws
WebSocketConnectionManager manager = new WebSocketConnectionManager(
                            client, new WebSocketCameraHandler(), finalUrl);
                    manager.setOrigin("127.0.0.1");
                    HttpHeaders httpHeaders = new HttpHeaders();
                    manager.setHeaders(httpHeaders);
                    //建立连接
                    manager.start();
                    //关闭连接
                    manager.stop();

综上,就是整个webSocket接收字节消息的方法,下一篇写下图片转视频!地址:Jim2Mov图片转视频

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值