-
Notifications
You must be signed in to change notification settings - Fork 7
WebSocket接口
maborosh edited this page Nov 7, 2020
·
9 revisions
本接口主要用来接收和推送用户消息,消息格式均为JSON
地址为
ws://api.bandoristation.com 或 wss://api.bandoristation.com
WebSocket API需要客户端发送心跳包维持连接,心跳包内容可以是Heartbeat Action或者其他任意数据,心跳包发送间隔为30秒。Heartbeat Action格式如下
{
"action":"heartbeat",
"data":{
"client":"" //此处填写客户端名
}
}
一个命令为一个Action,一次请求可以包含多个Action,每个Action依次执行。请求消息结构如下
// 单个Action请求
{
"action":"actionName",
"data":{
"key":"value"
}
}
// 多个Action请求
[
{
"action":"action1",
"data":{
"key":"value"
}
},
{
"action":"action2",
"data":{
"key":"value"
}
}
]
由于WebSocket的特性,请求和响应并不像HTTP那样一一对应的,所以在返回数据中也带有action字段,结构如下
{
"status":"success/failure",
"action":"actionName",
"response":{}
}
当“status”字段为“failure”时,返回数据为提示消息
字段名 | 数据类型 | 说明 |
---|---|---|
status | string | failure |
action | string | sendNotice |
response | string | 消息内容 |
以下说明中的返回数据“status”字段值均为“success”,“failure”情况不再另行说明
※必须在设置客户端之后服务端才会推送消息,设置方法见设置客户端
字段名 | 数据类型 | 说明 |
---|---|---|
status | string | success |
action | string | sendRoomNumberList |
response | array | 内部数据格式请参阅《API接口》中“查询房间数据”相关说明 |
字段名 | 数据类型 | 说明 |
---|---|---|
status | string | success |
action | string | sendChat |
response | array |
response中的单条数据
字段名 | 数据类型 | 说明 |
---|---|---|
timestamp | number | 消息发送时间,13位时间戳 |
content | string | 消息内容 |
user_info | object | 用户信息 |
user_info
字段名 | 数据类型 | 说明 |
---|---|---|
user_id | number | 用户ID |
username | string | 用户名 |
avatar | string | 用户头像文件名,头像文件可以从地址 https://assets.bandoristation.com/images/user-avatar/{avatar} 获取 |
不同于第一版的WS接口,新版WS接口必须设置客户端之后服务端才会推送数据
字段名 | 数据类型 | 填入值 | 说明 |
---|---|---|---|
action | string | setClient | |
data | object |
data
字段名 | 数据类型 | 填入值 | 说明 |
---|---|---|---|
client | string | 客户端名称 | 选填 |
send_room_number | boolean | 设置是否推送房间号消息 | |
send_chat | boolean | 设置是否推送聊天消息 |
无
用来计算服务器时间和本地时间偏差值,WebSocket连接成功时会自动发送一次服务器时间
字段名 | 数据类型 | 填入值 | 说明 |
---|---|---|---|
action | string | getServerTime | |
data | null | null |
字段名 | 数据类型 | 说明 |
---|---|---|
status | string | success |
action | string | sendServerTime |
response | object |
response
字段名 | 数据类型 | 说明 |
---|---|---|
time | number | 13位时间戳 |
字段名 | 数据类型 | 填入值 | 说明 |
---|---|---|---|
action | string | getRoomNumberList | |
data | null | null |
字段名 | 数据类型 | 说明 |
---|---|---|
status | string | success |
action | string | sendRoomNumberList |
response | array | 内部数据格式请参阅《API接口》中“查询房间数据”相关说明 |
设置WebSocket接口访问权限
字段名 | 数据类型 | 填入值 | 说明 |
---|---|---|---|
action | string | setAccessPermission | |
data | object |
data
字段名 | 数据类型 | 填入值 | 说明 |
---|---|---|---|
token | string | 用户访问Token | 在Server接口登陆后获取 |
无
※需要先设置访问权限
字段名 | 数据类型 | 填入值 | 说明 |
---|---|---|---|
action | string | sendRoomNumber | |
data | object |
data
字段名 | 数据类型 | 填入值 | 说明 |
---|---|---|---|
room_number | string | 房间号 | |
description | string | 房间号描述 |
无
※需要先设置访问权限
字段名 | 数据类型 | 填入值 | 说明 |
---|---|---|---|
action | string | sendRoomNumber | |
data | null | null |
字段名 | 数据类型 | 说明 |
---|---|---|
status | string | success |
action | string | initializeChatRoom |
response | object |
response
字段名 | 数据类型 | 说明 |
---|---|---|
message_list | array | 消息数组,格式与推送消息中的聊天消息一致 |
self_id | number | 当前访问接口的用户ID |
is_end | boolean | 消息列表是否加载完全* |
*一次只会加载40条消息(缓存中的消息会被完全加载,消息可能会大于40条),剩余的消息将会分段加载。“is_end”为false表明还有聊天记录没被加载
※需要先设置访问权限
字段名 | 数据类型 | 填入值 | 说明 |
---|---|---|---|
action | string | sendChat | |
data | object |
data
字段名 | 数据类型 | 填入值 | 说明 |
---|---|---|---|
message | string | 聊天消息 |
无
※需要先设置访问权限
字段名 | 数据类型 | 填入值 | 说明 |
---|---|---|---|
action | string | loadChatLog | |
data | object |
data
字段名 | 数据类型 | 填入值 | 说明 |
---|---|---|---|
timestamp | number | 已加载的最早一条消息的发送时间,13为时间戳 |
字段名 | 数据类型 | 说明 |
---|---|---|
status | string | success |
action | string | loadChatLog |
response | object |
response
字段名 | 数据类型 | 说明 |
---|---|---|
message_list | array | 消息数组,格式与推送消息中的聊天消息一致 |
is_end | boolean | 消息列表是否加载完全 |