数据协议
这是一个指导客户端与直播助理 WebSocket 服务器进行数据通信的协议。
安装包
- TypeScript
- C#
yarn add @live-assistant/protocols-data
NuGet\Install-Package LiveAssistant.Protocols.Data
服务器
在大多数情况下,服务器运行在本地端口上,例如 ws://localhost:[PORT]/data
,但它也可以是一个公共服务器,例如 wss://example.com:[PORT]/data
。
要连接到服务器,请在你的客户端中建立与 ws://localhost:[PORT]/data?authorization=[PASSWORD]&types=[TYPES]&version=[VERSION]
或 wss://example.com:[PORT]/data?authorization=[PASSWORD]&types=[TYPES]&version=[VERSION]
的 WebSocket 连接。
端口
默认情况下,服务器运行在端口 7196
上,但是用户也可以更改它。
密码
如果用户设置了密码,那么连接到服务器时需要密码。
版本
协议的版本,服务器只会接受版本小于或等于服务器支持的版本的连接。否则,服务器将关闭连接。
类型
客户端请求的数据类型。服务器只会接受所有请求的数据类型都可用的连接,否则,服务器将关闭连接。
这个参数是逗号分隔的数据类型列表。例如,types=message,gift
将请求服务器发送 message
和 gift
数据。要了解更多关于数据类型的信息,请参阅数据类型。
心跳
鉴于目前唯一的服务器实现是直播助理桌面应用程序,因此协议不要求客户端向服务器发送心跳。这种行为可能会在未来发生变化。
消息格式
通过 WebSocket 发送的消息是一个序列化的 JSON 字符串,格式如下:
- TypeScript
- C#
type DataType = {
| 'enter'
| 'follow'
| 'audienceUpdate'
| 'message'
| 'superChat'
| 'gift'
| 'membership'
| 'viewersCount'
| 'caption'
| 'heartRate'
| 'mediaInfo'
| 'inputAudioSpectrum'
| 'outputAudioSpectrum'
| 'karaokeStation'
| 'mousePosition'
| 'mouseButton'
| 'keyboardButton'
| 'gamepad'
}
type Message = {
type: DataType
payload: Payload
}
struct SocketDataPayload
{
public string Type;
public object Payload;
}
提示
Type
可以映射为 RequestedDataType
:
enum RequestedDataType
{
Enter,
Follow,
AudienceUpdate,
Message,
SuperChat,
Gift,
Membership,
ViewersCount,
Caption,
HeartRate,
MediaInfo,
InputAudioSpectrum,
OutputAudioSpectrum,
KaraokeStation,
MousePosition,
MouseButton,
KeyboardButton,
Gamepad,
}
payload
的真实类型取决于 type
。有关更多信息,请参阅数据类型。