新增直播间统计,粉丝团 消息;添加弹幕输出
This commit is contained in:
@@ -10,7 +10,19 @@
|
||||
点赞,
|
||||
进入直播间,
|
||||
关注主播,
|
||||
送礼
|
||||
送礼,
|
||||
直播间统计,
|
||||
粉丝团信息
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 粉丝团消息类型
|
||||
/// </summary>
|
||||
public enum FansclubType
|
||||
{
|
||||
无 = 0,
|
||||
粉丝团升级 = 1,
|
||||
加入粉丝团 = 2
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -128,4 +140,41 @@
|
||||
/// </summary>
|
||||
public long Count { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 直播间统计消息
|
||||
/// </summary>
|
||||
public class UserSeqMsg : Msg
|
||||
{
|
||||
/// <summary>
|
||||
/// 当前直播间用户数量
|
||||
/// </summary>
|
||||
public long OnlineUserCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 累计直播间用户数量
|
||||
/// </summary>
|
||||
public long TotalUserCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 累计直播间用户数量 显示文本
|
||||
/// </summary>
|
||||
public string TotalUserCountStr { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前直播间用户数量 显示文本
|
||||
/// </summary>
|
||||
public string OnlineUserCountStr { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 粉丝团消息
|
||||
/// </summary>
|
||||
public class FansclubMsg : Msg
|
||||
{
|
||||
/// <summary>
|
||||
/// 粉丝团消息类型,升级1,加入2
|
||||
/// </summary>
|
||||
public int Type { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -123,30 +123,35 @@ namespace BarrageGrab
|
||||
{
|
||||
switch (msg.Method)
|
||||
{
|
||||
//来了
|
||||
case "WebcastMemberMessage":
|
||||
{
|
||||
var arg = Serializer.Deserialize<MemberMessage>(new ReadOnlyMemory<byte>(msg.Payload));
|
||||
this.OnMemberMessage?.Invoke(this, arg);
|
||||
break;
|
||||
}
|
||||
//关注
|
||||
case "WebcastSocialMessage":
|
||||
{
|
||||
var arg = Serializer.Deserialize<SocialMessage>(new ReadOnlyMemory<byte>(msg.Payload));
|
||||
this.OnSocialMessage?.Invoke(this, arg);
|
||||
break;
|
||||
}
|
||||
//消息
|
||||
case "WebcastChatMessage":
|
||||
{
|
||||
var arg = Serializer.Deserialize<ChatMessage>(new ReadOnlyMemory<byte>(msg.Payload));
|
||||
this.OnChatMessage?.Invoke(this, arg);
|
||||
break;
|
||||
}
|
||||
//点赞
|
||||
case "WebcastLikeMessage":
|
||||
{
|
||||
var arg = Serializer.Deserialize<LikeMessage>(new ReadOnlyMemory<byte>(msg.Payload));
|
||||
this.OnLikeMessage?.Invoke(this, arg);
|
||||
break;
|
||||
}
|
||||
//礼物
|
||||
case "WebcastGiftMessage":
|
||||
{
|
||||
var arg = Serializer.Deserialize<GiftMessage>(new ReadOnlyMemory<byte>(msg.Payload));
|
||||
@@ -189,18 +194,21 @@ namespace BarrageGrab
|
||||
this.OnGiftMessage?.Invoke(this, arg);
|
||||
break;
|
||||
}
|
||||
//直播间统计
|
||||
case "WebcastRoomUserSeqMessage":
|
||||
{
|
||||
var arg = Serializer.Deserialize<RoomUserSeqMessage>(new ReadOnlyMemory<byte>(msg.Payload));
|
||||
this.OnRoomUserSeqMessage?.Invoke(this, arg);
|
||||
break;
|
||||
}
|
||||
//直播间状态变更
|
||||
case "WebcastControlMessage":
|
||||
{
|
||||
var arg = Serializer.Deserialize<ControlMessage>(new ReadOnlyMemory<byte>(msg.Payload));
|
||||
this.OnControlMessage?.Invoke(this, arg);
|
||||
break;
|
||||
}
|
||||
//粉丝团消息
|
||||
case "WebcastFansclubMessage":
|
||||
{
|
||||
var arg = Serializer.Deserialize<FansclubMessage>(new ReadOnlyMemory<byte>(msg.Payload));
|
||||
|
||||
@@ -23,6 +23,7 @@ namespace BarrageGrab
|
||||
ConsoleWriter console = new ConsoleWriter();
|
||||
WssBarrageGrab grab = new WssBarrageGrab();
|
||||
Appsetting Appsetting = Appsetting.Get();
|
||||
int printCount = 0;
|
||||
|
||||
public WssBarrageService()
|
||||
{
|
||||
@@ -36,6 +37,9 @@ namespace BarrageGrab
|
||||
this.grab.OnMemberMessage += Grab_OnMemberMessage;
|
||||
this.grab.OnSocialMessage += Grab_OnSocialMessage;
|
||||
this.grab.OnGiftMessage += Grab_OnGiftMessage;
|
||||
this.grab.OnRoomUserSeqMessage += Grab_OnRoomUserSeqMessage;
|
||||
this.grab.OnFansclubMessage += Grab_OnFansclubMessage; ;
|
||||
//this.grab.OnControlMessage += Grab_OnControlMessage;
|
||||
|
||||
this.socketServer = socket;
|
||||
//dieout.Start();
|
||||
@@ -54,6 +58,39 @@ namespace BarrageGrab
|
||||
return user;
|
||||
}
|
||||
|
||||
private void Grab_OnFansclubMessage(object sender, ProtoEntity.FansclubMessage e)
|
||||
{
|
||||
var enty = new FansclubMsg()
|
||||
{
|
||||
Content = e.Content,
|
||||
RoomId = e.commonInfo.roomId,
|
||||
Type = e.Type,
|
||||
User = GetUser(e)
|
||||
};
|
||||
Print($"[粉丝团消息] " + enty.Content, ConsoleColor.Blue);
|
||||
var pack = new BarrageMsgPack(JsonConvert.SerializeObject(enty), BarrageMsgType.粉丝团信息);
|
||||
var json = JsonConvert.SerializeObject(pack);
|
||||
this.Broadcast(json);
|
||||
}
|
||||
|
||||
private void Grab_OnRoomUserSeqMessage(object sender, ProtoEntity.RoomUserSeqMessage e)
|
||||
{
|
||||
var enty = new UserSeqMsg()
|
||||
{
|
||||
OnlineUserCount = e.Total,
|
||||
TotalUserCount = e.totalUser,
|
||||
TotalUserCountStr = e.totalPvForAnchor,
|
||||
OnlineUserCountStr = e.onlineUserForAnchor,
|
||||
RoomId = e.Common.roomId,
|
||||
Content = $"当前直播间人数 {e.onlineUserForAnchor},累计直播间人数 {e.totalPvForAnchor}",
|
||||
User = null
|
||||
};
|
||||
Print($"[直播间统计] " + enty.Content, ConsoleColor.Magenta);
|
||||
var pack = new BarrageMsgPack(JsonConvert.SerializeObject(enty), BarrageMsgType.直播间统计);
|
||||
var json = JsonConvert.SerializeObject(pack);
|
||||
this.Broadcast(json);
|
||||
}
|
||||
|
||||
private void Grab_OnGiftMessage(object sender, ProtoEntity.GiftMessage e)
|
||||
{
|
||||
var enty = new GiftMsg()
|
||||
@@ -66,6 +103,7 @@ namespace BarrageGrab
|
||||
GiftName = e.Gift.Name,
|
||||
User = GetUser(e)
|
||||
};
|
||||
Print($"[礼物消息] " + enty.Content, ConsoleColor.Red);
|
||||
var pack = new BarrageMsgPack(JsonConvert.SerializeObject(enty), BarrageMsgType.送礼);
|
||||
var json = JsonConvert.SerializeObject(pack);
|
||||
this.Broadcast(json);
|
||||
@@ -75,10 +113,11 @@ namespace BarrageGrab
|
||||
{
|
||||
var enty = new Msg()
|
||||
{
|
||||
Content = e.Common.Describe,
|
||||
Content = $"{e.User.Nickname} 关注了主播",
|
||||
RoomId = e.Common.roomId,
|
||||
User = GetUser(e)
|
||||
};
|
||||
Print("[关注消息] " + enty.Content, ConsoleColor.Yellow);
|
||||
var pack = new BarrageMsgPack(JsonConvert.SerializeObject(enty), BarrageMsgType.关注主播);
|
||||
var json = JsonConvert.SerializeObject(pack);
|
||||
this.Broadcast(json);
|
||||
@@ -88,10 +127,11 @@ namespace BarrageGrab
|
||||
{
|
||||
var enty = new Msg()
|
||||
{
|
||||
Content = e.Common.Describe,
|
||||
Content = $"{e.User.Nickname} 来了",
|
||||
RoomId = e.Common.roomId,
|
||||
User = GetUser(e)
|
||||
};
|
||||
Print("[进直播间] " + enty.Content, ConsoleColor.Green);
|
||||
var pack = new BarrageMsgPack(JsonConvert.SerializeObject(enty), BarrageMsgType.进入直播间);
|
||||
var json = JsonConvert.SerializeObject(pack);
|
||||
this.Broadcast(json);
|
||||
@@ -102,10 +142,11 @@ namespace BarrageGrab
|
||||
var enty = new LikeMsg()
|
||||
{
|
||||
Count = e.Count,
|
||||
Content = e.Common.Describe,
|
||||
Content = $"{e.User.Nickname} 为主播点了{e.Count}个赞",
|
||||
RoomId = e.Common.roomId,
|
||||
User = GetUser(e)
|
||||
};
|
||||
Print("[点赞消息] " + enty.Content, ConsoleColor.Cyan);
|
||||
var pack = new BarrageMsgPack(JsonConvert.SerializeObject(enty), BarrageMsgType.点赞);
|
||||
var json = JsonConvert.SerializeObject(pack);
|
||||
this.Broadcast(json);
|
||||
@@ -119,11 +160,26 @@ namespace BarrageGrab
|
||||
RoomId = e.Common.roomId,
|
||||
User = GetUser(e)
|
||||
};
|
||||
Print($"[弹幕消息] {enty.User.Nickname}: {enty.Content}", ConsoleColor.White);
|
||||
var pack = new BarrageMsgPack(JsonConvert.SerializeObject(enty), BarrageMsgType.消息);
|
||||
var json = JsonConvert.SerializeObject(pack);
|
||||
this.Broadcast(json);
|
||||
}
|
||||
|
||||
private void Print(string msg, ConsoleColor color)
|
||||
{
|
||||
if (Appsetting.PrintBarrage)
|
||||
{
|
||||
console.WriteLine($"{DateTime.Now.ToString("HH:mm:ss")} " + msg + "\n", color);
|
||||
if (++printCount > 99999)
|
||||
{
|
||||
printCount = 0;
|
||||
Console.Clear();
|
||||
Console.WriteLine("已执行清理");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void Dieout_Elapsed(object sender, ElapsedEventArgs e)
|
||||
{
|
||||
var now = DateTime.Now;
|
||||
@@ -176,6 +232,7 @@ namespace BarrageGrab
|
||||
this.grab.Start(); //启动代理
|
||||
this.socketServer.Start(Listen);//启动监听
|
||||
console.WriteLine($"{this.socketServer.Location} 弹幕服务已启动...", ConsoleColor.Green);
|
||||
Console.Title = $"抖音弹幕监听推送 [{this.socketServer.Location}]";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user