6.3 KiB
6.3 KiB
信令
信令格式
{
"header": {
"v": "版本",
"id": 请求标识,
"signal": "信令标识",
"clientId": "设备标识"
},
"code": "响应编码",
"message": "响应描述",
"body": {
// 信令主体
}
}
术语解释
请求:终端->信令服务 || 信令服务->媒体服务
响应:信令服务->终端 || 服务媒体->信令服务
广播:信令服务-)终端 || 信令服务+)终端
符号解释
-[消息类型]> 请求(单播):定向请求(单播)信令
-[消息类型]) 全员广播:对所有的终端广播信令(排除自己)
+[消息类型]) 全员广播:对所有的终端广播信令(包含自己)
注意:没有消息类型表示请求类型
终端信令
终端广播信令(client::broadcast)
# 请求主体
{
// 主体
}
# 广播主体
{
// 主体
}
# 消息流程:终端->信令服务-)终端
终端关闭信令(client::close)
# 请求主体
{
}
# 响应主体
{
}
# 消息流程:终端->信令服务->终端
# 消息流程:终端->信令服务-[终端下线])终端
终端配置信令(client::config)
# 响应主体
{
"time": "系统时间(yyyyMMddHHmmss)",
"media": "媒体配置",
"webrtc": "WebRTC配置"
}
# 消息流程:终端-[终端注册]>信令服务->终端
终端心跳信令(client::heartbeat)
# 请求主体
{
"signal": 信号强度(0~100),
"battery": 电池电量(0~100),
"charging": 是否充电(true|false)
}
# 响应主体
{
}
# 消息流程:终端->信令服务->终端
终端列表信令(client::list)
# 请求主体
{
}
# 响应主体
[
{
"clientId": "终端标识",
"ip": "终端IP",
"signal": 信号强度(0~100),
"battery": 电池电量(0~100),
"charging": 是否充电(true|false),
"mediaId": "媒体服务标识",
"lastHeartbeat": "最后心跳时间"
},
...
]
# 消息流程:终端->信令服务->终端
终端下线信令(client::offline)
# 广播主体
{
"clientId": "下线终端标识"
}
# 消息流程:终端-[终端关闭]>信令服务-)终端
终端上线信令(client::online)
# 广播主体
{
"clientId": "终端标识",
"ip": "终端IP",
"signal": 信号强度(0~100),
"battery": 电池电量(0~100),
"charging": 是否充电(true|false),
"mediaId": "媒体服务标识",
"lastHeartbeat": "最后心跳时间"
}
# 消息流程:终端-[终端注册]>信令服务-)终端
重启终端信令(client::reboot)
# 响应主体
{
}
# 消息流程:信令服务->终端
终端注册信令(client::register)
# 请求主体
{
"username": "信令用户",
"password": "信令密码",
"clientId": "终端标识",
"ip": "终端IP",
"signal": 信号强度(0~100),
"battery": 电池电量(0~100),
"charging": 是否充电(true|false)
}
# 响应主体
{
}
# 消息流程:终端->信令服务->终端
# 消息流程:终端->信令服务-[终端上线])终端
终端状态信令(client::status)
# 请求主体
{
"clientId": "终端标识"
}
# 响应主体
{
"clientId": "终端标识",
"ip": "终端IP",
"signal": 信号强度(0~100),
"battery": 电池电量(0~100),
"charging": 是否充电(true|false),
"mediaId": "媒体服务标识",
"lastHeartbeat": "最后心跳时间"
}
# 消息流程:终端->信令服务->终端
终端单播信令(client::unicast)
# 请求主体
{
"to": "接收终端标识",
// 主体信息
}
# 响应主体
{
// 主体信息
}
# 消息流程:终端->信令服务->终端
媒体服务信令
媒体服务列表信令(media::list)
# 请求主体:
{
}
# 响应主体:
[
{
"name": "名称",
"enabled": "是否启用",
"host": "主机",
"port": "端口",
"schema": "协议",
"address": "完整地址"
}
]
# 消息流程:终端->信令服务->终端
重启媒体服务信令(media::reboot)
# 请求主体:
{
}
# 响应主体:
{
}
# 消息流程:终端->信令服务+)终端
媒体服务注册信令(media::register)
# 请求主体:
{
"username": "媒体用户",
"password": "媒体密码"
}
# 响应主体:
{
}
# 消息流程:信令服务->媒体服务->信令服务
平台信令
异常信令(platform::error)
通知执行信令时发生的异常
# 响应主体:
{
}
# 消息流程:终端->信令服务->终端
关闭平台信令(platform::reboot)
# 请求主体:
{
}
# 广播主体:
{
}
# 消息流程:终端->信令服务+)终端
执行命令信令(platform::script)
# 请求主体
{
"script": "命令"
}
# 响应主体
{
"result": "结果"
}
# 消息流程:终端->服务端->终端
关闭平台信令(platform::shutdown)
# 请求主体:
{
}
# 广播主体:
{
}
# 消息流程:终端->信令服务+)终端
房间信令(4000~4999)
创建房间信令(4000)
消息主体
{}
----
{
"id": "房间标识"
}
消息流程:终端->服务端+)终端
关闭房间信令(4001)
释放资源、广播广播
进入房间信令(4002)
消息主体
# 请求
{
"id": "房间标识"
}
# 广播
{
"id": "房间标识",
"clientId": "终端标识"
}
消息流程:终端->服务端-)终端
终端进入房间,广播通知其他终端。
离开房间信令(4003)
广播
邀请终端信令(4004)
邀请终端进入房间,终端确认进入发送进入房间信令。
踢出终端信令(4005)
广播
房间广播信令(4006)
房间终端列表信令(4997)
房间状态信令(4998)
房间列表信令(4999)
系统信令
重启系统信令(system::reboot)
# 请求主体:
{
}
# 广播主体:
{
}
# 消息流程:终端->信令服务+)终端
关闭系统信令(system::shutdown)
# 请求主体:
{
}
# 广播主体:
{
}
# 消息流程:终端->信令服务+)终端
测试
let socket = new WebSocket("wss://localhost:8888/websocket.signal");
socket.send('{"header":{"signal":"client::register","v":"1.0.0","id":"1"},"body":{"username":"taoyao","password":"taoyao","clientId":"taoyao"}}');
socket.send('{"header":{"signal":"client::heartbeat","v":"1.0.0","id":"1"},"body":{}}');