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