java实现websocket推送信息至前端

简单方便,开箱即用

一、引入jar包 javax.websocket-api-1.1.jar
注意:这个包与Tomcat内置的websocket会引起冲突,但是在本地开发的时候不会有什么影响,在部署的时候要把这个包删掉。会自动找Tomcat的包。、
二、编写方法类

package com.jinxin.cd.smarthome.webInterface;


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import javax.websocket.*;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

@Component
@ServerEndpoint("/webSocket/{userId}")
public class MyWebSocket {
   

    private static Logger logger = LoggerFactory.getLogger(MyWebSocket.class);

    private String userId;

    private Session session;

    private static Map<String,MyWebSocket> client = new ConcurrentHashMap<>();


    @OnOpen
    public void onOpen(@PathParam("userId") String userId,Session session){
   
        logger.debug("新连接:{}",userId);
        if (!isEmpty(userId)){
   
            this.userId = userId;
            this.session = session;
            client.put(userId, this);
            logger.info("现在连接的客户编码为:" + userId
  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用JavaCV库来实现接收摄像头视频流,并使用WebSocket将视频流推送前端进行播放。具体实现可以参考以下代码: ``` import org.bytedeco.javacv.*; import org.java_websocket.WebSocket; import org.java_websocket.handshake.ClientHandshake; import org.java_websocket.server.WebSocketServer; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; public class CameraWebSocketServer extends WebSocketServer { private static final int WEBSOCKET_PORT = 8888; private static final int CAMERA_INDEX = 0; private static FrameGrabber grabber; private static OpenCVFrameConverter.ToIplImage converter; private static ByteArrayOutputStream outputStream; public CameraWebSocketServer() { super(new InetSocketAddress(WEBSOCKET_PORT)); } @Override public void onOpen(WebSocket webSocket, ClientHandshake clientHandshake) { System.out.println("WebSocket opened"); } @Override public void onClose(WebSocket webSocket, int i, String s, boolean b) { System.out.println("WebSocket closed"); } @Override public void onMessage(WebSocket webSocket, ByteBuffer byteBuffer) { // do nothing } @Override public void onError(WebSocket webSocket, Exception e) { System.out.println("WebSocket error: " + e.getMessage()); } @Override public void onStart() { System.out.println("WebSocket server started"); // initialize camera grabber and converter grabber = new OpenCVFrameGrabber(CAMERA_INDEX); converter = new OpenCVFrameConverter.ToIplImage(); try { grabber.start(); } catch (FrameGrabber.Exception e) { System.out.println("Failed to start camera grabber: " + e.getMessage()); System.exit(1); } // start sending video frames to WebSocket clients new Thread(() -> { while (true) { try { // grab a frame from the camera Frame frame = grabber.grab(); // convert the frame to an IplImage IplImage image = converter.convert(frame); // encode the image to JPEG format outputStream = new ByteArrayOutputStream(); Java2DFrameUtils.toMat(frame).encode(".jpg", outputStream); // send the image data to all WebSocket clients broadcast(outputStream.toByteArray()); } catch (FrameGrabber.Exception | IOException e) { System.out.println("Failed to grab camera frame: " + e.getMessage()); } } }).start(); } public static void main(String[] args) { new CameraWebSocketServer().start(); } } ``` 这段代码实现了一个WebSocket服务器,可以接收前端的连接并推送摄像头视频流。在启动WebSocket服务器之前,需要先安装JavaCV库和Java-WebSocket库。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值