using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WGShare.Domain.Enums;
namespace WGShare.Domain.DTOs.AgoraCallback
{
public class EventBody
{
///
/// 通知 ID,标识来自声网业务服务器的一次事件通知。
///
public string noticeId { get; set; }
///
/// 业务 ID。值为 1 表示实时通信业务。
///
public int productId { get; set; }
///
/// 通知的事件类型。详见频道事件类型。
///
public EventType eventType { get; set; }
///
/// 声网消息服务器向你的服务器发送事件通知的 Unix 时间戳 (ms)。通知重试时该值会更新。
///
public long notifyMs { get; set; }
///
/// 会话 ID。
///
public string sid { get; set; }
///
/// 通知事件的具体内容。payload 因 eventType 而异,详见频道事件类型。
///
public AgoraCallbackPayload payload { get; set; }
}
public class AgoraCallbackPayload
{
///
/// 频道名称
///
public string channelName { get; set; }
///
/// 该事件在声网业务服务器上发生的 Unix 时间戳 (s)。
///
public long ts { get; set; }
///
/// 最后一个离开频道的用户 ID。(则声网消息通知可能返回不同的 lastUid,此时任选其一即可。)
///
public long lastUid { get; set; }
///
/// 主播设备所属平台
///
public PlatformType platform { get; set; }
///
/// 序列号,标识该事件在 App 客户端上发生的顺序,可用于对同一用户的事件进行排序。详见维护用户在线状态。
///
public long clientSeq { get; set; }
///
/// String 类型的用户 ID。
///
public string account { get; set; }
///
/// 主播在频道内的时长 (s)。
///
public int duration { get; set; }
///
/// 主播离开频道的原因:
/// 1:主播正常离开频道。
/// 2:客户端与声网业务服务器连接超时。判断标准为声网 SD-RTN 超过 10 秒未收到该主播的任何数据包,或连接单台服务器 4 秒超时并在 1 秒内没有完成重连。
/// 3:权限问题。如被运营人员通过踢人 RESTful API 踢出频道。
/// 4:声网业务服务器内部原因。如声网业务服务器在调整负载,和客户端短暂断开连接,之后会重新连接。
/// 5:主播切换新设备,迫使旧设备下线。
/// 9:由于客户端有多个 IP 地址,SDK 主动与声网业务服务器断开连接并重连。此过程用户无感知。请检查用户是否存在多个公网 IP 或使用了 VPN。
/// 10:由于网络连接问题,例如 SDK 超过 4 秒未收到来自声网业务服务器的任何数据包或 socket 连接错误,SDK 主动与声网业务服务器断开连接并重连。此过程用户无感知。请检查网络连接状态。
/// 999:异常用户。例如,用户短时间内频繁登录登出频道会被判定为异常用户。信息:你的 App 服务端需要在收到 reason 为 999 的 104 事件 60 秒后调用踢人 API 将该用户踢出频道。否则,该用户再次加入频道后,可能无法收到相关事件通知。
/// 0:其他原因。
///
public LeaveReasonEnum reason { get; set; }
///
/// 主播在频道内的用户 ID。
///
public long uid { get; set; }
}
}