From 11afaae1f75a33e9efd59ab7ababbce41697b958 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=A2=85=E6=B5=A9=E4=B8=9C?= <1083092844@qq.com>
Date: Fri, 26 Apr 2024 10:19:14 +0800
Subject: [PATCH] =?UTF-8?q?com=20js=E8=BF=87=E6=BB=A4=E5=99=A8=20=E6=B7=BB?=
=?UTF-8?q?=E5=8A=A0=20BitConvert=20=E6=94=AF=E6=8C=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
BarrageGrab/ComPortServer.cs | 36 ++++++++--
BarrageGrab/JsEngine.cs | 76 +++++++++++++++++++--
BarrageGrab/Program.cs | 9 +--
BarrageGrab/Scripts/engine/comPortFilter.js | 46 ++++++++-----
BarrageGrab/WsBarrageServer.cs | 18 ++---
5 files changed, 144 insertions(+), 41 deletions(-)
diff --git a/BarrageGrab/ComPortServer.cs b/BarrageGrab/ComPortServer.cs
index bbdda9a..f328ea1 100644
--- a/BarrageGrab/ComPortServer.cs
+++ b/BarrageGrab/ComPortServer.cs
@@ -7,9 +7,13 @@ using System.IO.Ports;
using Jint;
using Jint.Runtime;
using System.Windows.Forms;
+using Jint.Native;
namespace BarrageGrab
{
+ ///
+ /// 串口服务
+ ///
public class ComPortServer : IDisposable
{
WsBarrageServer server;
@@ -22,7 +26,15 @@ namespace BarrageGrab
{
jsEngine = JsEngine.CreateNewEngine();
var jsFile = JsEngine.GetJsFile("comPortFilter.js");
- jsEngine.Execute(jsFile);
+ try
+ {
+ jsEngine.Execute(jsFile);
+ }
+ catch (Exception ex)
+ {
+ Logger.LogError(ex, $"comPortFilter.js 执行错误: {ex.Message}");
+ throw;
+ }
}
}
@@ -50,6 +62,8 @@ namespace BarrageGrab
{
if (!sendPort.IsOpen) return;
if (e == null) return;
+ if (e.Message == null) return;
+
if (!AppSetting.Current.UseComPortFilter)
{
var json = e.ToJson() + "\r\n";
@@ -57,7 +71,20 @@ namespace BarrageGrab
Send(jbuff);
return;
}
- var result = jsEngine.Invoke("onPackData", e.MsgType.GetHashCode(), e.Message);
+
+ var roomInfo = AppRuntime.RoomCaches.GetCachedWebRoomInfo(e.Message.RoomId.ToString());
+ JsValue result = null;
+ try
+ {
+ result = jsEngine.Invoke("onPackData", e.MsgType.GetHashCode(), e.Message, roomInfo);
+ }
+ catch (Exception ex)
+ {
+ Logger.LogError(ex, $"串口过滤器 onPackData 执行错误:{ex.Message}");
+ return;
+ }
+ if (result == null) return;
+
var nocanTypes = new Types[]
{
Types.Null,
@@ -115,15 +142,14 @@ namespace BarrageGrab
sendPort.Open();
}
catch (Exception ex)
- {
+ {
sendPort.Close();
sendPort.Dispose();
- sendPort = null;
+ sendPort = null;
throw ex;
}
}
-
public void Dispose()
{
if (sendPort == null) return;
diff --git a/BarrageGrab/JsEngine.cs b/BarrageGrab/JsEngine.cs
index 05ccd97..0ba724f 100644
--- a/BarrageGrab/JsEngine.cs
+++ b/BarrageGrab/JsEngine.cs
@@ -12,6 +12,10 @@ namespace BarrageGrab
{
public static class JsEngine
{
+ ///
+ /// 创建一个Js引擎
+ ///
+ ///
public static Engine CreateNewEngine()
{
var jsonParse = new Func