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; } } }