修复了已知的bug

This commit is contained in:
fengjiayi
2025-09-04 10:39:57 +08:00
parent f9ab920939
commit 51c268baad
28 changed files with 1099 additions and 108 deletions

View File

@@ -1,11 +1,6 @@
using Serein.Library;
using Serein.Library.Api;
using Serein.Library.Api;
using Serein.Library.Utils;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Text.Json.Nodes;
using System.Threading.Tasks;
namespace Serein.Proto.WebSocket.Handle
{

View File

@@ -24,6 +24,13 @@ namespace Serein.Proto.WebSocket
/// <returns></returns>
ISereinWebSocketService AddHandleModule<T>() where T : ISocketHandleModule, new();
/// <summary>
/// 添加处理模块
/// </summary>
/// <param name="socketHandleModule">接口实例</param>
/// <returns></returns>
ISereinWebSocketService AddHandleModule(ISocketHandleModule socketHandleModule);
/// <summary>
/// 添加处理模块
/// </summary>

View File

@@ -1,19 +1,19 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net8.0;</TargetFrameworks>
<TargetFrameworks>net8.0;net462</TargetFrameworks>
<ImplicitUsings>enable</ImplicitUsings>
<LangVersion>latest</LangVersion>
<Nullable>enable</Nullable>
<BaseOutputPath>..\.\.Output</BaseOutputPath>
<Title>基于Json数据载体的WebSocket交互工具包</Title>
<Version>1.0.1</Version>
<Version>1.0.2</Version>
<Description>基于Json数据载体的WebSocket交互工具包</Description>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<PackageRequireLicenseAcceptance>True</PackageRequireLicenseAcceptance>
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
<ItemGroup>

View File

@@ -2,19 +2,10 @@
using Serein.Library.Utils;
using Serein.Proto.WebSocket.Attributes;
using Serein.Proto.WebSocket.Handle;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Net.Sockets;
using System.Net.WebSockets;
using System.Reactive;
using System.Reflection;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
using NetWebSocket = System.Net.WebSockets.WebSocket;
namespace Serein.Proto.WebSocket
@@ -73,6 +64,19 @@ namespace Serein.Proto.WebSocket
var type = typeof(T);
Func<ISocketHandleModule> instanceFactory = () => (T)Activator.CreateInstance(type);
return AddHandleModule(type, instanceFactory);
}
/// <summary>
/// 添加处理模块,使用指定的实例工厂和异常追踪回调
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="instanceFactory"></param>
/// <param name="onExceptionTracking"></param>
public ISereinWebSocketService AddHandleModule(ISocketHandleModule socketHandleModule)
{
var type = socketHandleModule.GetType();
Func<ISocketHandleModule> instanceFactory = () => socketHandleModule;
return AddHandleModule(type, instanceFactory);
}
/// <summary>
@@ -380,11 +384,11 @@ namespace Serein.Proto.WebSocket
/// <returns></returns>
public async Task PushDataAsync(object latestData)
{
var options = new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
};
var json = JsonSerializer.Serialize(latestData, options);
//var options = new JsonSerializerOptions
//{
// PropertyNamingPolicy = JsonNamingPolicy.CamelCase
//};
var json = JsonHelper.Serialize(latestData);
var buffer = Encoding.UTF8.GetBytes(json);
var segment = new ArraySegment<byte>(buffer);

View File

@@ -1,33 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Serein.Proto.WebSocket
{
public class ClassA : ISocketHandleModule
{
}
public class ClassB : ISocketHandleModule
{
}
public class ClassC : ISocketHandleModule
{
}
internal class TestClass
{
public void Run()
{
SereinWebSocketService sereinWebSocketService = new SereinWebSocketService();
sereinWebSocketService.AddHandleModule<ClassA>();
sereinWebSocketService.AddHandleModule<ClassB>(() => new ClassB());
}
}
}

View File

@@ -1,10 +1,6 @@
using Serein.Library.Api;
using Serein.Library.Utils;
using Serein.Proto.WebSocket.Handle;
using System;
using System.Diagnostics.CodeAnalysis;
using System.Threading.Tasks;
using static System.Runtime.InteropServices.JavaScript.JSType;
namespace Serein.Proto.WebSocket
{
@@ -110,7 +106,8 @@ namespace Serein.Proto.WebSocket
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="tag"></param>
public bool TryGetTag<T>([NotNullWhen(true)] out T? tag)
//public bool TryGetTag<T>([NotNullWhen(true)] out T? tag)
public bool TryGetTag<T>(out T? tag)
{
lock (_wsTagLockObj)
{