赞
踩
原本本专栏到前面写的4篇文章已经结束了,结果公司前端哥们儿搞了一个笑话,我们项目在IE中打不开;注意是打不开,不是兼容性不好;最后经过前端专家以及架构师领导们一致商量,既然前端不能实现,我们还有后端人员呀!?让后端人员转码嘛!问题不就解决啦?反正我们只要出结果就可以了。
哎,还有什么好说的,只能撸码呀!
前面几篇文章主要讲了vlc、浏览器中集成vlc、Javacv抓图以及Javacv录制视频等相关内容;本文将讲解如何运用websocket实时播放rtsp流媒体;刚让转码时也尝试过其它方式,但是感觉其它方法都很麻烦要求搭建各种环境或者服务器,本文将完全用代码的方式实现该骚操作。
不废话,上才艺!
因为在以前项目中没有使用过websocket,在这儿也简单提一下websocket的使用。
什么是websocket?
WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket通信协议于2011年被IETF定为标准RFC 6455,并由RFC7936补充规范。WebSocket API也被W3C定为标准。
WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
<!-- springboot集成websocket -->
<dependency>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-api</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
@Configuration
public class WebSocketConfig {
@Bean
public ServerEndpointExporter serverEndpointExporter(){
return new ServerEndpointExporter();
}
}
import lombok.extern.slf4j.Slf4j; 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.ServerEndpoint; import java.io.IOException; import java.util.concurrent.CopyOnWriteArraySet; @Slf4j @ServerEndpoint(value = "/webSocket") @Component public class WebSocketReceiveMessage { //用来存放每个客户端对应的WebSocketReceiveMessage对象,适用于同时与多个客户端通信 public static CopyOnWriteArraySet<WebSocketReceiveMessage> webSocketSet = new CopyOnWriteArraySet<>(); //与某个客户端的连接会话,通过它实现消息推送 private Session session; /** * 建立连接成功调用的方法 */ @OnOpen public void onOpen(Session session) { this.session = session; // 添加到set中 webSocketSet.add(this); } /** * 关闭连接调用的方法 */ @OnClose public void onClose(Session closeSession){ webSocketSet.remove(this); } /** * 收到客户端消息调用的方法 */ @OnMessage public void onMessage(String message,Session mysession) throws Exception{ log.info("--------on message-------"); for (WebSocketReceiveMessage item: webSocketSet) { item.sendAllMessage(message); } } //向该Session连接的用户发送字符串数据 public void sendAllMessage(String message) throws IOException { this.session.getBasicRemote().sendText(message); } }
在网上找了一个测试websocket的地址websocket接口验证
测试连接与消息分发
后台打印信息
注解 | 描述 |
---|---|
@OnOpen | 连接建立时触发 |
@OnClose | 连接关闭时触发 |
@OnMessage | 收到消息时触发 |
@OnError | 通信发生错误时触发 |
由于时间有限,今天先简单介绍websocket的使用,等忙过这段时间在实现websocket根据javacv获取帧实时播放rtsp视频流;
写在最后,要跟对领导,跟对团队才有机会学习更多新东西,敲跟多代码,如果你也赞同我的观点,麻烦你关注点赞加评论。如果文章中有什么不对的地方希望大佬指出,个人能力有限。谢谢大家!
欢迎转载,转载请注明出处!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。