当前位置:   article > 正文

websocket播放rtsp方案之websocket简介_websocket rtsp

websocket rtsp

1 回顾

原本本专栏到前面写的4篇文章已经结束了,结果公司前端哥们儿搞了一个笑话,我们项目在IE中打不开;注意是打不开,不是兼容性不好;最后经过前端专家以及架构师领导们一致商量,既然前端不能实现,我们还有后端人员呀!?让后端人员转码嘛!问题不就解决啦?反正我们只要出结果就可以了。
哎,还有什么好说的,只能撸码呀!
前面几篇文章主要讲了vlc、浏览器中集成vlc、Javacv抓图以及Javacv录制视频等相关内容;本文将讲解如何运用websocket实时播放rtsp流媒体;刚让转码时也尝试过其它方式,但是感觉其它方法都很麻烦要求搭建各种环境或者服务器,本文将完全用代码的方式实现该骚操作。
不废话,上才艺!

2 websocket搭建

因为在以前项目中没有使用过websocket,在这儿也简单提一下websocket的使用。
什么是websocket?
WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket通信协议于2011年被IETF定为标准RFC 6455,并由RFC7936补充规范。WebSocket API也被W3C定为标准。
WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

2.1 引包

 <!-- 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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

2.2 配置

@Configuration
public class WebSocketConfig {
	@Bean
	public ServerEndpointExporter serverEndpointExporter(){
		return new ServerEndpointExporter();
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

2.3 websocket测试demo

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);
	}
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57

2.3 websocket验证

在网上找了一个测试websocket的地址websocket接口验证
测试连接与消息分发
在这里插入图片描述

后台打印信息
在这里插入图片描述

2.4 几个注解说明

注解描述
@OnOpen连接建立时触发
@OnClose连接关闭时触发
@OnMessage收到消息时触发
@OnError通信发生错误时触发

3 总结

由于时间有限,今天先简单介绍websocket的使用,等忙过这段时间在实现websocket根据javacv获取帧实时播放rtsp视频流;
写在最后,要跟对领导,跟对团队才有机会学习更多新东西,敲跟多代码,如果你也赞同我的观点,麻烦你关注点赞加评论。如果文章中有什么不对的地方希望大佬指出,个人能力有限。谢谢大家!
欢迎转载,转载请注明出处!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/280112
推荐阅读
相关标签
  

闽ICP备14008679号