package com.example.janussignaling.websocketclient;
import com.example.janussignaling.DTO.JanusUserSession;
import com.example.janussignaling.manager.JanusSessionManager;
import com.example.janussignaling.manager.RoomManager;
import com.example.janussignaling.util.JanusUtils;
import jdk.jfr.DataAmount;
import lombok.extern.slf4j.Slf4j;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.HashMap;
import java.util.Map;
import org.json.JSONObject;
import org.springframework.web.socket.WebSocketSession;
import static com.example.janussignaling.constant.JanusKeyConstant.TRANSACTION_FIELD;
import static com.example.janussignaling.constant.JanusRole.PUBLISHER;
import static com.example.janussignaling.constant.JanusRole.SUBSCRIBER;
import static com.example.janussignaling.constant.JanusStatConstant.*;
@Slf4j
public class JanusWebSocketClient extends WebSocketClient {
private WebSocketSession session;
private JanusSessionManager janusSessionManager;
private RoomManager roomManager;
private Long roomId = 12346L;
public JanusWebSocketClient(WebSocketSession session, JanusSessionManager janusSessionManager, RoomManager roomManager) throws URISyntaxException {
super(new URI("ws://43.132.171.79:8188"), addCustomHeaders()); // 替换成你的 Janus Videoroom 地址
// super(new URI("wss://43.132.171.79:8989"), addCustomHeaders()); // 替换成你的 Janus Videoroom 地址
this.session = session;
this.janusSessionManager = janusSessionManager;
this.roomManager = roomManager;
}
private static Map<String, String> addCustomHeaders() {
Map<String, String> headers = new HashMap<>();
// 添加自定义头部字段
headers.put("Sec-WebSocket-Protocol", "janus-protocol");
// 添加其他自定义头部字段
// headers.put("Another-Header", "Another-Value");
return headers;
}
public void beginJanusSession() {
String randomTransaction = JanusUtils.createRandomTransactionId();
sendToJanus(JanusUtils.constructCreateJanusSessionBody(randomTransaction));
JanusUserSession janusUserSession = janusSessionManager.getJanusUserSession(session.getId());
janusUserSession.setState(randomTransaction, CREATE);
janusUserSession.setCurrentState(CREATE);
}
@Override
public void onOpen(ServerHandshake handShakeData) {
System.out.println("Connected to Janus VideoRoom");
// 在这里可以发送初始化消息或执行其他操作
}
@Override
public void onMessage(String message) {
System.out.println("Received message from Janus: " + message);
JSONObject jsonMessage = new JSONObject(message);
String stat = null;
try {
stat = janusSessionManager.getState(session.getId(), jsonMessage.optString(TRANSACTION_FIELD));
} catch (Exception e) {
throw new RuntimeException(e);
}
String randomTransaction;
JanusUserSession janusUserSession;
switch (stat) {
case CREATE -> {
// 将janusSessionId写入janusUserSession
janusSessionManager.handleCreateState(session.getId(), jsonMessage);
//获取插件
randomTransaction = JanusUtils.createRandomTransactionId();
janusUserSession = janusSessionManager.getJanusUserSession(session.getId());
sendToJanus(JanusUtils.constructAttachVideoRoomBody(randomTransaction, janusUserSession.getJanusSessionId()));
janusUserSession.setState(randomTransaction, ATTACH);
janusUserSession.setCurrentState(ATTACH);
}
case ATTACH -> {
// 将handleId写入janusUserSession
janusSessionManager.handleAttachState(session.getId(), jsonMessage);
randomTransaction = JanusUtils.createRandomTransactionId();
janusUserSession = janusSessionManager.getJanusUserSession(session.getId());
if (PUBLISHER.equals(janusUserSession.getRole())) {
sendToJanus(JanusUtils.constructCreateRoomBody(randomTransaction, janusUserSession.getJanusSessionId(), janusUserSession.getHandleId(), roomId));
janusUserSession.setState(randomTransaction, CREATE_ROOM);
janusUserSession.setCurrentState(CREATE_ROOM);
}
if (SUBSCRIBER.equals(janusUserSession.getRole())) {
sendToJanus(JanusUtils.constructPlayerJoinRoomBody(randomTransaction, janusUserSession.getJanusSessionId(), janusUserSession.getHandleId(), roomId, roomManager.getDeviceJanusUserSession(janusUserSession.getDeviceId()).getFeedId()));
janusUserSession.setState(randomTransaction, JOIN);
janusUserSession.setCurrentState(JOIN);
}
}
// case LIST_PARTICIPANTS -> {
// janusSessionManager.han;
// randomTransaction = JanusUtils.createRandomTransactionId();
// janusUserSession = janusSessionManager.getJanusUserSession(session.getId());
// }
case CREATE_ROOM -> {
janusSessionManager.handleCreateRoom(session.getId(), jsonMessage);
randomTransaction = JanusUtils.createRandomTransactionId();
janusUserSession = janusSessionManager.getJanusUserSession(session.getId());
sendToJanus(JanusUtils.constructDeviceJoinRoomBody(randomTransaction, janusUserSession.getJanusSessionId(), janusUserSession.getHandleId(), roomId));
janusUserSession.setState(randomTransaction, JOIN);
janusUserSession.setCurrentState(JOIN);
}
case JOIN -> {
randomTransaction = JanusUtils.createRandomTransactionId();
janusUserSession = janusSessionManager.getJanusUserSession(session.getId());
if (PUBLISHER.equals(janusUserSession.getRole())) {
janusSessionManager.handlePublisherJoin(session.getId(), jsonMessage);
if (JOIN.equals(janusUserSession.getCurrentState())) {
sendToJanus(JanusUtils.constructConfigureBody(randomTransaction, janusUserSession.getJanusSessionId(), janusUserSession.getHandleId(), janusUserSession.getRemoteSdp()));
janusUserSession.setState(randomTransaction, CONFIGURE);
janusUserSession.setCurrentState(CONFIGURE);
}
}
if (SUBSCRIBER.equals(janusUserSession.getRole())) {
janusSessionManager.handleSubscriberJoin(session.getId(), jsonMessage);
if (JOIN.equals(janusUserSession.getCurrentState())) {
sendToJanus(JanusUtils.constructStartBody(randomTransaction, janusUserSession.getJanusSessionId(), janusUserSession.getHandleId(), janusUserSession.getRemoteSdp(), roomId));
janusUserSession.setState(randomTransaction, START);
janusUserSession.setCurrentState(START);
}
}
}
case CONFIGURE -> {
janusSessionManager.handleConfigure(session.getId(), jsonMessage);
janusUserSession = janusSessionManager.getJanusUserSession(session.getId());
janusUserSession.setCurrentState(COMPLETE);
}
case COMPLETE -> janusSessionManager.handleComplete(session.getId(), jsonMessage);
default -> {
}
}
// 处理来自 Janus 的消息
// 将消息发送回对�
没有合适的资源?快使用搜索试试~ 我知道了~
2_JanusSignaling.zip
![preview](https://csdnimg.cn/release/downloadcmsfe/public/img/white-bg.ca8570fa.png)
共156个文件
xml:75个
java:14个
class:14个
![preview-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/scale.ab9e0183.png)
需积分: 5 0 下载量 174 浏览量
2023-11-20
08:03:57
上传
评论
收藏 233KB ZIP 举报
温馨提示
2_JanusSignaling.zip
资源推荐
资源详情
资源评论
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![application/x-zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![application/x-zip](https://img-home.csdnimg.cn/images/20210720083736.png)
收起资源包目录
![package](https://csdnimg.cn/release/downloadcmsfe/public/img/package.f3fc750b.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JAR.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
共 156 条
- 1
- 2
资源评论
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/5c12a276ac5c4d768048ac457bfb0e78_qq_32073131.jpg!1)
myisam丶
- 粉丝: 15
- 资源: 11
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
- day_07_NB_SpamMessage.zip
- 开关电源设计-一种有效的反激钳位电路设计方法.doc
- 基于SSM开发的旅游信息管理系统程序.zip
- 医学图像分割数据:covid-19肺部感染区域分割【包含3个切面的切片数据、标签文件、可视化代码】
- 基于jsp+servlet实现的图书管理系统(源码+数据库 )
- 大河网servlet+jsp+jdbc的java原生小项目,包含了servlet过滤器和监听器的简单应用
- 链表-基于Java的单链表基本操作之链表相交.zip
- 链表-基于Java的单链表基本操作之删除操作.zip
- 链表-基于Java的单链表基本操作之逆向输出.zip
- 链表-基于Java的单链表基本操作之链表排序.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)