5.6 KiB
5.6 KiB
信令
信令格式
{
"header": {
"v": "版本",
"id": 请求标识,
"sn": "设备标识"
"pid": 信令标识,
},
"code": "响应编码",
"message": "响应描述",
"body": {
// 信令主体
}
}
符号解释
-> 单播:定向传播信令
-) 广播:广播信令(排除自己)
+) 全员广播:广播信令(包含自己)
平台信令(1000~1999)
关闭服务信令(1000)
消息主体
# 请求
{}
# 广播
{}
消息流程:终端->服务端+)终端
全员广播关闭服务信令,然后关闭信令服务。
执行命令信令(1001)
消息主体
# 请求
{
"script": "命令"
}
# 响应
{
"result": "结果"
}
消息流程:终端->服务端->终端
执行命令同时响应结果
异常信令(1999)
消息主体
{}
终端信令(2000~2999)
终端信息
终端注册信令(2000)
消息主体
# 请求
{
"username": "信令授权用户",
"password": "信令授权密码",
"ip": "IP地址",
"mac": "MAC地址",
"signal": "信号强度",
"battery": "电池电量"
}
# 响应
{}
# 广播
{
"sn": "终端标识",
"ip": "IP地址",
"mac": "MAC地址",
"signal": "信号强度",
"battery": "电池电量"
}
消息流程:终端->服务端-)终端
终端注册成功以后响应同时下发配置信令,并且广播终端上线信令。
终端关闭信令(2001)
消息主体
# 请求
{}
# 广播
{
"sn": "终端标识"
}
消息流程:终端-)服务端
终端关闭以后广播终端下线信令,同时释放所有相关资源(信令通道、媒体通道等等)
终端上线信令(2002)
消息主体
{
"sn": "终端标识"
}
消息流程:服务端->终端
参考终端注册信令
终端下线信令(2003)
消息主体
{
"sn": "终端标识"
}
消息流程:服务端->终端
参考终端关闭信令
下发配置信令(2004)
消息主体
{
"time": "系统时间:yyyyMMddHHmmss",
"media": "媒体配置",
"webrtc": "WebRTC配置"
}
消息流程:服务端->终端
参考终端注册信令
心跳信令(2005)
消息主体
# 请求
{
"signal": "信号强度",
"battery": "电池电量"
}
# 响应
{}
消息流程:终端->服务端->终端
单播信令(2006)
消息主体
# 请求
{
"to": "接收终端标识",
// 主体信息
}
# 转发
{
// 主体信息
}
消息流程:终端->服务端->终端
终端转发信令到指定的终端
广播信令(2007)
消息主体
# 请求
{
// 主体信息
}
# 广播
{
// 主体信息
}
消息流程:终端->服务端-)终端
终端广播信令到所有的终端
终端状态信令(2998)
消息主体
# 请求
{
"sn": "终端标识"
}
# 响应
{
"sn": "终端标识",
"ip": "IP地址",
"mac": "MAC地址",
"signal": "信号强度",
"battery": "电池电量"
}
消息流程:终端->服务端->终端
响应指定终端状态(如果没有指定终端标识默认查询自己)
终端列表信令(2999)
消息主体
# 请求
{}
# 响应
[
{
"sn": "终端标识",
"ip": "IP地址",
"mac": "MAC地址",
"signal": "信号强度",
"battery": "电池电量"
},
...
]
消息流程:终端->服务端->终端
响应所有终端状态列表
直播信令(3000~3999)
开启直播信令(3000)
关闭直播信令(3001)
直播终端列表信令(3997)
直播状态信令(3998)
直播列表信令(3999)
会议信令(4000~4999)
创建会议信令(4000)
消息主体
{}
----
{
"id": "会议标识",
}
消息流程:终端->服务端+)终端
关闭会议信令(4001)
释放资源、广播广播
进入会议信令(4002)
消息主体
# 请求
{
"id": "会议标识"
}
# 广播
{
"id": "会议标识",
"sn": "终端标识"
}
消息流程:终端->服务端-)终端
终端进入会议,广播通知其他终端。
离开会议信令(4003)
广播
邀请终端信令(4004)
邀请终端进入会议,终端确认进入发送进入会议信令。
踢出终端信令(4005)
广播
会议终端列表信令(4997)
会议状态信令(4998)
会议列表信令(4999)
媒体信令(5000~5999)
发布信令(5000)
控制终端推流(服务端拉流)
取消发布指令(5001)
控制终端暂停推流(服务端取消拉流)
订阅指令(5002)
订阅终端媒体流(终端拉流)
取消订阅指令(5003)
取消订阅终端媒体流(终端取消拉流)
暂停指令(5004)
终端->服务端 暂停发布、订阅(不关媒体流通道) MCU/SFU模式有效
恢复指令(5005)
终端->服务端 暂停发布、订阅(不关媒体流通道) MCU/SFU模式有效
开启录像(5006)
停止录像(5007)
配置媒体(5008)
配置订阅媒体:码率、帧率、分辨率等等
IceCandidate
Offer
Answer
测试
let socket = new WebSocket("wss://localhost:8888/websocket.signal");
socket.send('{"header":{"pid":2000,"v":"1.0.0","id":"1","sn":"taoyao"},"body":{"username":"taoyao","password":"taoyao"}}');
socket.send('{"header":{"pid":1000,"v":"1.0.0","id":"1","sn":"taoyao"},"body":{}}');