Files
taoyao/taoyao-signal-server/taoyao-signal/README.md
2023-02-12 15:33:35 +08:00

6.2 KiB
Raw Blame History

信令

信令格式

{
	"header": {
		"v": "版本",
		"id": 请求标识,
		"sn": "设备标识"
		"signal": "信令标识",
	},
	"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

# 请求主体
{
}
# 响应主体
[
	{
		"sn": "终端标识",
		"ip": "终端IP",
		"signal": 信号强度0~100,
		"battery": 电池电量0~100,
		"charging": 是否充电true|false,
		"mediaName": "媒体服务名称",
		"lastHeartbeat": "最后心跳时间"
	},
	...
]
# 消息流程:终端->信令服务->终端

终端下线信令client::offline

# 广播主体
{
	"sn": "下线终端标识"
}
# 消息流程:终端-[终端关闭]>信令服务-)终端

终端上线信令client::online

# 广播主体
{
	"sn": "终端标识",
	"ip": "终端IP",
	"signal": 信号强度0~100,
	"battery": 电池电量0~100,
	"charging": 是否充电true|false,
	"mediaName": "媒体服务名称",
	"lastHeartbeat": "最后心跳时间"
}
# 消息流程:终端-[终端注册]>信令服务-)终端

重启终端信令client::reboot

# 响应主体
{
}
# 消息流程:信令服务->终端

终端注册信令client::register

# 请求主体
{
	"username": "信令用户",
	"password": "信令密码",
	"sn": "终端标识",
	"ip": "终端IP",
	"signal": 信号强度0~100,
	"battery": 电池电量0~100,
	"charging": 是否充电true|false
}
# 响应主体
{
}
# 消息流程:终端->信令服务->终端
# 消息流程:终端->信令服务-[终端上线])终端

终端状态信令client::status

# 请求主体
{
	"sn": "终端标识"
}
# 响应主体
{
	"sn": "终端标识",
	"ip": "终端IP",
	"signal": 信号强度0~100,
	"battery": 电池电量0~100,
	"charging": 是否充电true|false,
	"mediaName": "媒体服务名称",
	"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": "房间标识",
	"sn": "终端标识"
}

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

终端进入房间,广播通知其他终端。

离开房间信令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","sn":"taoyao"}}');
socket.send('{"header":{"signal":"client::heartbeat","v":"1.0.0","id":"1"},"body":{}}');