7.4 KiB
7.4 KiB
id, title, sidebar_label
| id | title | sidebar_label |
|---|---|---|
| api | 接口 | 接口 |
如何调用接口
fiora 后端基于 socket.io, 首先需要与后端建立连接
import IO from 'socket.io-client';
const socket = new IO(serverAddrress, options);
接口调用格式为
socket.emit(event, data, callback);
参数说明
- event {string} 接口名/事件名
- data {object} 接口入参
- callback {string|object => void} 接口回调, 返回 string 表示接口失败, string 内容为失败原因, 反正 object 表示接口成功, 里面包含返回数据
返回数据结构定义
User
{
_id, // {string} id
username, // {string} 用户名
avatar, // {string} 头像
groups, // {[Group]} 群组列表
friends, // {[User]} 好友列表
token, // {string} 免密登录token
isAdmin, // {boolean} 是否为管理员
}
Group
{
_id, // {string} id
name, // {string} 群组名
avatar, // {string} 头像
creator, // {User ID} 群主id
isDefault, // {boolean} 是否为默认群
members, // {[User]} 成员列表
messages, // {[Message]} 消息列表
}
Message
{
_id, // {string} id
from, // {User} 发送者
to, // {string} 群聊: 群id, 私聊: 两人id拼接, 按字符串比较, 小的在前
type, // {string} 消息类型 ['text', 'image', 'code', 'invite']
content, // {string} 消息内容
}
接口列表
用户注册
socket.emit(
'register',
{
username, // {string} 用户名
password, // {string} 密码
os, // {string} 操作系统
browser, // {string} 浏览器
environment, // {string} 环境信息
},
(user) => {}, // {User} 用户数据
);
用户登录
socket.emit(
'login',
{
username, // {string} 用户名
password, // {string} 密码
os, // {string} 操作系统
browser, // {string} 浏览器
environment, // {string} 环境信息
},
(user) => {}, // {User} 用户数据
);
免密登录 / 断线重连
socket.emit(
'loginByToken',
{
token, // {string} 免密登录token
os, // {string} 操作系统
browser, // {string} 浏览器
environment, // {string} 环境信息
},
(user) => {}, // {User} 用户数据
);
游客登录
游客仅能获取到默认群组
socket.emit(
'guest',
{
os, // {string} 操作系统
browser, // {string} 浏览器
environment, // {string} 环境信息
},
(defaultGroup) => {}, // {Group} 默认群组数据
);
修改头像
socket.emit(
'changeAvatar',
{
avatar, // {string} 新头像url
},
() => {}, // {Object} 返回空对象
);
添加好友
socket.emit(
'addFriend',
{
userId, // {User ID} 目标的id
},
(friend) => {}, // {User} 好友信息
);
删除好友
socket.emit(
'deleteFriend',
{
userId, // {User ID} 目标的id
},
() => {}, // {Object} 返回空对象
);
修改密码
socket.emit(
'changePassword',
{
oldPassword, // {string} 旧密码
newPassword, // {string} 新密码
},
() => {}, // {Object} 返回空对象
);
修改用户名
socket.emit(
'changeUsername',
{
username, // {string} 新用户名
},
() => {}, // {Object} 返回空对象
);
重置指定用户密码
仅管理员可调用
socket.emit(
'resetUserPassword',
{
username, // {string} 新用户名
},
(data) => { // {Object} 返回数据
data.newPassword, // {string} 新密码
},
);
发送消息
通过 to 字段判断是发送给群, 还是发送给个人 发送群的话, to 就是群 id 发送个人的话, to 就是两个人的 id 拼接, 按字符串比较结果, 小的在前大的在后
socket.emit(
'sendMessage',
{
to, // {string} 目标群组, 或者俩用户id拼接结果
type, // {string} 消息类型
content, // {string} 消息内容
},
(message) => {}, // {Message} 新消息
);
获取联系人最后消息
socket.emit(
'getLinkmansLastMessages',
{
linkmans, // {[string]} 联系人id列表, 与to同规则
},
(messages) => {}, // {object} 所有联系人的最后消息, key: 联系人id, value: [Message] 消息列表
);
获取联系人历史消息
socket.emit(
'getLinkmanHistoryMessages',
{
linkmanId, // {string} 联系人id
existCount, // {number} 已有消息数量
},
(messages) => {}, // {[Message]} 消息列表
);
获取默认群组的历史消息
不需要登录态
socket.emit(
'getDefaultGroupHistoryMessages',
{
existCount, // {number} 已有消息数量
},
(messages) => {}, // {[Message]} 消息列表
);
创建群组
socket.emit(
'createGroup',
{
name, // {string} 群组名
},
(group) => {}, // {Group} 新创建的群组
);
加入群组
socket.emit(
'joinGroup',
{
groupId, // {Group ID} 目标群id
},
(group) => {}, // {Group} 新创建的群组
);
退出群组
socket.emit(
'leaveGroup',
{
groupId, // {Group ID} 目标群id
},
() => {}, // {object} 返回空数据
);
获取群组在线用户列表
socket.emit(
'getGroupOnlineMembers',
{
groupId, // {Group ID} 目标群id
},
(users) => {}, // {[User]} 在线用户列表
);
获取默认群组在线用户列表
socket.emit(
'getDefaultGroupOnlineMembers',
{},
(users) => {}, // {[User]} 在线用户列表
);
修改群头像
socket.emit(
'changeGroupAvatar',
{
groupId, // {Group ID} 目标群id
avatar, // {string} 新头像url
},
() => {}, // {object} 返回空数据
);
获取七牛前端文件上传 token
socket.emit(
'uploadToken',
{ },
(data) => {
// 服务端支持七牛
data.token, // 上传token
data.urlPrefix, // 文件上传后的路径前缀
// 服务端不支持七牛
data.useUploadFile, // 不支持上传七牛, 需要客户端调用 uploadFile 上传文件到服务端
},
);
搜索用户/群组
socket.emit(
'search',
{
keywords, // {string} 搜索关键字
},
(data) => {
data.users, // {[User]} 命中的用户
data.groups, // {[Group]} 命中的群组
},
);
搜索表情包
socket.emit(
'searchExpression',
{
keywords, // {string} 搜索关键字
},
(imageUrls) => {}, // {[string]} 图片列表
);
获取百度语言合成 token
socket.emit(
'getBaiduToken',
{ },
(data) => {
data.token, // {string} token
},
);
封禁用户
socket.emit(
'sealUser',
{
username, // {string} 要封禁的用户名
},
() => {}, // {object} 返回空数据
);
获取封禁用户列表
socket.emit(
'getSealList',
{},
(users) => {}, // {[string]} 被封禁的用户名列表
);
上传文件到服务端
socket.emit(
'uploadFile',
{
fileName, // {string} 文件名
file, // {blob} 文件内容, blob格式
},
(data) => {
data.url, // 文件url
},
);