From e3a73c0151cfb0bc8b1ebaeb96b9e36807d0cd66 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=B0=8F=E7=99=BD=E7=8C=BF?= <1083092844@qq.com>
Date: Mon, 19 Jun 2023 21:44:21 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=8E=A7=E5=88=B6=E5=8F=B0?=
=?UTF-8?q?=E7=82=B9=E5=87=BB=E9=98=BB=E5=A1=9E=E9=97=AE=E9=A2=98;=20?=
=?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=A8=8B=E5=BA=8F=E5=85=B3=E9=97=AD=E6=8C=87?=
=?UTF-8?q?=E4=BB=A4=E5=85=A5=E5=8F=A3;?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
BarrageGrab/Program.cs | 62 +++++++++++++++++++++-------
BarrageGrab/WsBarrageService.cs | 25 ++++++++++-
BarrageGrab/WssBarrageGrab.cs | 2 +-
BarrageGrab/WssBarrageService.csproj | 1 +
4 files changed, 72 insertions(+), 18 deletions(-)
diff --git a/BarrageGrab/Program.cs b/BarrageGrab/Program.cs
index e2d19e9..b74f62f 100644
--- a/BarrageGrab/Program.cs
+++ b/BarrageGrab/Program.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
+using System.Threading;
using System.Threading.Tasks;
namespace BarrageGrab
@@ -14,24 +15,26 @@ namespace BarrageGrab
static WsBarrageService server = null;
static void Main(string[] args)
{
- SetConsoleCtrlHandler(cancelHandler, true);//捕获控制台关闭
- Console.Title = "抖音弹幕监听推送";
+ SetConsoleCtrlHandler(cancelHandler, true);//捕获控制台关闭
+ Console.Title = "抖音弹幕监听推送";
+ DisableQuickEditMode();
+ bool exited = false;
server = new WsBarrageService();
- server.StartListen();
-
- while (true)
+ server.StartListen();
+ server.OnClose += (s, e) =>
{
- var input = Console.ReadKey();
- switch (input.Key)
- {
- case ConsoleKey.Escape: goto end; break;
- }
- }
+ //退出程序
+ exited = true;
+ };
- end:
- server.Close();
- Console.WriteLine("服务器已正常关闭,按任意键结束...");
- Console.ReadKey();
+ while (!exited)
+ {
+ Thread.Sleep(500);
+ }
+ Console.WriteLine("服务器已关闭...");
+
+ //退出程序,不显示 按任意键退出
+ Environment.Exit(0);
}
@@ -54,5 +57,34 @@ namespace BarrageGrab
}
return false;
}
+
+
+ const int STD_INPUT_HANDLE = -10;
+ const uint ENABLE_QUICK_EDIT_MODE = 0x0040;
+ [DllImport("kernel32.dll", SetLastError = true)]
+ internal static extern IntPtr GetStdHandle(int hConsoleHandle);
+ [DllImport("kernel32.dll", SetLastError = true)]
+ internal static extern bool GetConsoleMode(IntPtr hConsoleHandle, out uint mode);
+ [DllImport("kernel32.dll", SetLastError = true)]
+ internal static extern bool SetConsoleMode(IntPtr hConsoleHandle, uint mode);
+
+ public static void EnableQuickEditMode()
+ {
+ IntPtr hStdin = GetStdHandle(STD_INPUT_HANDLE);
+ uint mode;
+ GetConsoleMode(hStdin, out mode);
+ mode |= ENABLE_QUICK_EDIT_MODE;
+ SetConsoleMode(hStdin, mode);
+ }
+
+ public static void DisableQuickEditMode()
+ {
+ IntPtr hStdin = GetStdHandle(STD_INPUT_HANDLE);
+ uint mode;
+ GetConsoleMode(hStdin, out mode);
+ mode &= ~ENABLE_QUICK_EDIT_MODE;
+ SetConsoleMode(hStdin, mode);
+ }
+
}
}
diff --git a/BarrageGrab/WsBarrageService.cs b/BarrageGrab/WsBarrageService.cs
index c9c5b35..098bdc9 100644
--- a/BarrageGrab/WsBarrageService.cs
+++ b/BarrageGrab/WsBarrageService.cs
@@ -31,6 +31,11 @@ namespace BarrageGrab
WssBarrageGrab grab = new WssBarrageGrab();
Appsetting Appsetting = Appsetting.Current;
bool debug = false;
+
+ ///
+ /// 服务关闭后触发
+ ///
+ public event EventHandler OnClose;
public WsBarrageService()
{
@@ -399,6 +404,22 @@ namespace BarrageGrab
socketList[clientUrl].Socket = socket;
}
+ //接收指令
+ socket.OnMessage = (message) =>
+ {
+ try
+ {
+ var cmdPack = JsonConvert.DeserializeObject(message);
+ if (cmdPack == null) return;
+
+ if (cmdPack.Cmd == CommandCode.Close)
+ {
+ this.Close();
+ }
+ }
+ catch (Exception) {}
+ };
+
socket.OnClose = () =>
{
socketList.Remove(clientUrl);
@@ -440,7 +461,7 @@ namespace BarrageGrab
}
///
- /// 关闭服务器连接
+ /// 关闭服务器连接,并关闭系统代理
///
public void Close()
{
@@ -449,7 +470,7 @@ namespace BarrageGrab
socketServer.Dispose();
grab.Dispose();
- console.WriteLine("服务器已关闭...");
+ this.OnClose?.Invoke(this, EventArgs.Empty);
}
class UserState
diff --git a/BarrageGrab/WssBarrageGrab.cs b/BarrageGrab/WssBarrageGrab.cs
index 614da85..976bdd0 100644
--- a/BarrageGrab/WssBarrageGrab.cs
+++ b/BarrageGrab/WssBarrageGrab.cs
@@ -81,7 +81,7 @@ namespace BarrageGrab
public void Dispose()
{
- proxy.Dispose();
+ proxy.Dispose();
}
//域名过滤器
diff --git a/BarrageGrab/WssBarrageService.csproj b/BarrageGrab/WssBarrageService.csproj
index aba6053..c7a8960 100644
--- a/BarrageGrab/WssBarrageService.csproj
+++ b/BarrageGrab/WssBarrageService.csproj
@@ -108,6 +108,7 @@
+