Springboot编写服务端基于websocket的视频传输接口
文章目录
前言
今天初步完成了websocket视频接口的编写。websocket入门请看这位大神的文章SpringBoot2.0集成WebSocket,实现后台向前端推送信息
和前后端配合完成websocket传输 根据上面两篇文章可以完胜基本的需求
具体流程如下:
一、明确需求
另一家公司会在客户端通过websocket传输视频,需要调用我的接口,我这里通过websocket接受这个视频。
二、设计接口
1.引入库
代码如下(示例):
<!--引入websocket依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
<groupId>org.java-websocket</groupId>
<artifactId>Java-WebSocket</artifactId>
<version>1.3.5</version>
</dependency>
2.编写接口
首先需要进行配置(示例):
package dzftxt.config;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
/**
* @author :Siyuan Gao
* @date :Created in 2020/9/8 14:08
* @description:websocket的bean
* @modified By:
* @version: $
*/
@Component
public class WebSocketConfig {
@Bean
public ServerEndpointExporter serverEndpointExporter(){
return new ServerEndpointExporter();
}
}
然后进行serve的开发(示例):
package dzftxt.web.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import dzftxt.data.dataobject.Videos;
import dzftxt.data.form.VideoForm;
import dzftxt.service.SaveFileI;
import dzftxt.service.VideoService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.CopyOnWriteArraySet;
/**
* @author :Siyuan Gao
* @date :Created in 2020/9/12 10:24
* @description:用于接受处理客户端向服务端传递的信息
* @modified By:
* @version: $
*/
@Component
@ServerEndpoint("/upload/{sid}")
public class WebSocketUploadServer {
private static final Logger LOG = LoggerFactory.getLogger(WebSocketUploadServer.class);
//用来记录当前在线连接数,
private static int onlineCount = 0;
//线程安全的set,用来存放每个客户端对应的websocket对象
private static CopyOnWriteArraySet<WebSocketUploadServer> webSocketSet = new CopyOnWriteArraySet<>();
//与某个客户端的连接会话,需要通过它来给客户端发送数据
private Session session;
private static SaveFileI saveFileI;
@Autowired
public void setSaveFileI(SaveFileI saveFileI){
WebSocketUploadServer.saveFileI=saveFileI