登录流程
当 WebSocket 连接成功建立后,客户端必须发送的第一个报文就是登录报文,以完成身份验证。
1. 登录报文格式
登录报文是一个以 * 开头的 JSON 字符串。
log
*{"r":"房间ID","n":"用户名",...}该 JSON 对象包含了登录所需的所有信息。IIROSE 支持“账号登录”和“游客登录”两种模式。
账号登录
这是标准的登录方式,需要用户名和密码。
核心字段
| 字段 | 类型 | 必需 | 说明 |
|---|---|---|---|
r | string | 是 | 要进入的房间ID。 |
n | string | 是 | 你的机器人账号用户名。 |
p | string | 是 | 密码的32位小写MD5哈希值。 |
lr | string | 否 | 旧房间地址(用于切换房间的重新登录) |
st | string | 否 | 账号状态,例如在线、挂机中等。 |
mo | string | 否 | 账号个性签名。 |
mb | string | 否 | |
mu | string | 否 | 01 |
vc | string | 否 | 版本号 |
rp | string | 否 | 房间密码。 如果目标房间是加密房间,需要提供此字段。 |
fp | string | 否 | @{md5(用户名)} 的格式。用户名的32位小写MD5哈希值。 |
示例报文 - 直接登录
log
*{"r":"5ce6a4b520a90","n":"anata baka?","p":"cccaa43514a6c9ee76ed051184efd33f","st":"n","mo":"","mb":"","mu":"01","vc":"1142","fp":"@efb4eedb61f61939ba87855987e5751d"}示例报文 - 切换房间
log
*{"r":"5ce6a4b520a90","n":"上学","p":"cccaa43514a6c9ee76ed051184efd33f","lr":"5fdcb9b634621","st":"d","mo":"","mb":"","mu":"01","vc":"1142","fp":"@efb4eedb61f61939ba87855987e5751d"}游客登录
如果不想使用固定账号,可以选择游客模式登录。
核心字段
| 字段 | 类型 | 必需 | 说明 |
|---|---|---|---|
r | string | 是 | 要进入的房间ID。 |
n | string | 是 | 游客昵称。 |
i | string | 否 | 游客头像。例如 cartoon/600215。 |
nc | string | 否 | 昵称颜色,十六进制,如 3d5d58。 |
s | string | 否 | 性别。 |
st | string | 否 | n |
mo | string | 否 | 账号个性签名。 |
uid | string | 否 | 唯一的游客标识符。 |
li | string | 否 | |
mb | string | 否 | |
mu | string | 否 | 01 |
la | string | 否 | 语言 |
vc | string | 否 | 版本号 |
fp | string | 否 | @{md5(游客昵称)} 的格式。 |
示例报文
log
*{"r":"5ce6a4b520a90","n":"yokumo","i":"anime/234","nc":"ac81a2","s":"1","st":"n","mo":"","uid":"X608860379861","li":"032003330934","mb":"","mu":"01","la":"RU","vc":"1142","fp":"@efb4eedb61f61939ba87855987e5751d"}2. 登录响应
服务器在收到登录请求后,会返回一条以 % 开头的消息作为响应,告知登录结果。
登录成功
如果登录成功,服务器返回的报文通常会直接开始推送房间的初始数据,例如:
log
%*"http://r.iirose.com/i/25/5/30/10/1326-7X.png>2>白狐IDea>ffffff>63a882551d807>n>>>5d918932ed1ed>>http://r.iirose.com/i/25/2/5/2/1900-08.png>>>27707>240>16,98.3,0.5<https://xc.null.red:8043/XCimg/img/save/2025/08/28/blob-282839853#.jpg#e>1>九月>748485>63cb7ebc91945>n>无趣是原罪>>5e5bda2ac5b37>>http://r.iirose.com/i/22/12/10/23/3818-1B.jpg>4>0唯有月亮像一个梦🌒>28784>2063>127,83.4,1.56<http.....................这条消息包含了股价信息、在线用户列表、频道列表、当前频道历史消息、当前播放歌单数据等数据。
这是一个超级大的初始化数据包(大约670kb),用于用户登陆成功之后的前端渲染。
下一篇我们将讲解如何解析此包。
登录失败
如果登录失败,服务器会返回一个特定的错误代码。
| 错误报文 | 含义 |
|---|---|
%*"0 | 名字被占用:通常发生在游客登录时,选择的昵称已被房间内其他人使用。 |
%*"1 | 用户名不存在:账号登录时,提供的用户名未注册。 |
%*"2 | 密码错误:账号登录时,提供的密码MD5不正确。 |
%*"4 | 登录次数过多:该IP今日尝试登录的次数已达上限。 |
%*"5 | 房间密码错误:进入加密房间时,提供的房间密码不正确。 |
%*"x | 用户被封禁:该账号已被系统封禁。 |
%*"n0 | 房间无法进入:可能因为房间已满、仅白名单可入等原因。 |
在收到任何登录失败的报文后,客户端应断开连接并向用户提示相应的错误信息。