连接Socket
介绍
连接方式:
https://xxxx/websk?
加密方式
和请求接口的加密方式一样哦传送参数全部加密
公共参数
| 字段类型 | 参数说明 | 类型 | 是否必填 |
|---|---|---|---|
| event | 事件值 | sting | true |
| prefix | 前缀,目前固定为App | sting | true |
| platform | 平台,手机端填App,PC端填Pc | string | true |
连接登录
客户端请求数据
| 字段类型 | 参数说明 | 类型 | 是否必填 |
|---|---|---|---|
| event | 事件 Login | string | true |
| data | 具体参数 👇 | array | true |
| token | 当前用户的Token | string | true |
心跳包
客户端发心跳包数据
| 字段类型 | 参数说明 | 类型 | 是否必填 |
|---|---|---|---|
| event | 事件key值,vaule传pong | string | true |
客户端主动发起心跳, 建议20s发一次,格式为{"event":"pong"},请在登录成功后开始发送
服务端发心跳包数据 { "event": "ping", "message": "", "status": 200, }
通用错误码
返回示例
{
"event": "",
"message": "",
"status": "",
"data": {
}
}
| 字段类型 | 参数说明 | 类型 |
|---|---|---|
| event | 事件类型 | string |
| message | 中文说明 | string |
| status | 状态码 | int |
| data | 具体应答内容 | object/array |
状态码含义
| status | 返回值 | 结果 |
|---|---|---|
| status | 200 | 成功状态 |
| status | 500 | 处理失败 |
重要提示
提示
请APP端做好自动重连机制,
一般来说重连随次数的增加;间隔时间变的越久,比如说第一次等待1s重连,第二次等待2s重连,第三次等待3s后重连,第N次后还是连接不起就不连了...
为什么要有间隔时间,因为可能是后台断开的,如果后台重启,没有间隔时间的话 请求全部过来,服务器遭不住!!!
做好主动发心跳包
断线重连(重要) 不管是客户端发送心跳还是服务端发送心跳,连接都有断开的可能。例如浏览器最小化js被暂停、浏览器切换到其它tab页面js被暂停、电脑进入睡眠等等、移动端切换网络、信号变弱、手机黑屏、手机应用切换到后台、路由故障、业务主动断开等。尤其是外网环境复杂,很多路由节点会清理1分钟内不活跃的连接,这也是为什么心跳间隔推荐小于1分钟的原因。
连接在外网环境很容易被断开,所以断线重连是长连接应用必须具备的功能(断线重连只能客户端做,服务端无法实现)。例如浏览器websocket需要监听onclose事件,当发生onclose时建立新的连接(为避免需崩可延建立连接)。更严格一点,服务端也应该定时发起心跳数据,并且客户端需要定时监测服务端的心跳数据是否超时,超过规定时间未收到服务端心跳数据应该认定连接已经断开,需要执行close关闭连接,并重新建立新的连接。
客户端主动发起心跳, 建议20s发一次,格式为{"event":"pong"}