Files
taoyao/taoyao-signal/README.md
2022-11-26 12:20:05 +08:00

5.8 KiB
Raw Blame History

信令

信令格式

{
	"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

消息主体

# 请求
{
	// 主体信息
}
# 广播
{
	// 主体信息
}

消息流程:终端->服务端-)终端

终端广播信令到所有的终端

重启终端信令2997

消息主体

# 请求
{
}

消息流程:服务器->终端

重启终端

终端状态信令2998

消息主体

# 请求
{
	"sn": "终端标识"
}
# 响应
{
	"sn": "终端标识",
	"ip": "IP地址",
	"mac": "MAC地址",
	"signal": "信号强度",
	"battery": "电池电量"
}

消息流程:终端->服务端->终端

响应指定终端状态(如果没有指定终端标识默认查询自己)

终端列表信令2999

消息主体

# 请求
{}
# 响应
[
	{
		"sn": "终端标识",
		"ip": "IP地址",
		"mac": "MAC地址",
		"signal": "信号强度",
		"battery": "电池电量"
	},
	...
]

消息流程:终端->服务端->终端

响应所有终端状态列表

直播信令3000~3999

开启直播信令3000

关闭直播信令3001

直播广播信令3002

直播终端列表信令3997

直播状态信令3998

直播列表信令3999

会议信令4000~4999

创建会议信令4000

消息主体

{}
----
{
	"id": "会议标识"
}

消息流程:终端->服务端+)终端

关闭会议信令4001

释放资源、广播广播

进入会议信令4002

消息主体

# 请求
{
	"id": "会议标识"
}
# 广播
{
	"id": "会议标识",
	"sn": "终端标识"
}

消息流程:终端->服务端-)终端

终端进入会议,广播通知其他终端。

离开会议信令4003

广播

邀请终端信令4004

邀请终端进入会议,终端确认进入发送进入会议信令。

踢出终端信令4005

广播

会议广播信令4006

会议终端列表信令4997

会议状态信令4998

会议列表信令4999

媒体信令5000~5999

发布信令5000

控制终端推流(服务端拉流)

取消发布指令5001

控制终端暂停推流(服务端取消拉流)

订阅指令5002

订阅终端媒体流(终端拉流)

取消订阅指令5003

取消订阅终端媒体流(终端取消拉流)

候选信令5004

IceCandidate

暂停信令5004

终端->服务端 暂停发布、订阅(不关媒体流通道) MCU/SFU模式有效

恢复信令5005

终端->服务端 暂停发布、订阅(不关媒体流通道) MCU/SFU模式有效

开启录像信令5006

停止录像信令5007

配置媒体信令5008

配置订阅媒体:码率、帧率、分辨率等等

测试

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":{}}');