Skip to content

Commit 6353765

Browse files
committed
chore: 整理项目结构;处理编译警告
1 parent ac8c66e commit 6353765

27 files changed

Lines changed: 281 additions & 177 deletions

Cyaim.WebSocketServer/Cyaim.WebSocketServer.Client/ClientGenerator.cs renamed to Cyaim.WebSocketServer/Clients/Cyaim.WebSocketServer.Client/ClientGenerator.cs

File renamed without changes.

Cyaim.WebSocketServer/Cyaim.WebSocketServer.Client/Cyaim.WebSocketServer.Client.csproj renamed to Cyaim.WebSocketServer/Clients/Cyaim.WebSocketServer.Client/Cyaim.WebSocketServer.Client.csproj

File renamed without changes.

Cyaim.WebSocketServer/Cyaim.WebSocketServer.Cluster.FreeRedis/Cyaim.WebSocketServer.Cluster.FreeRedis.csproj renamed to Cyaim.WebSocketServer/Cluster/Cyaim.WebSocketServer.Cluster.FreeRedis/Cyaim.WebSocketServer.Cluster.FreeRedis.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,15 @@
3131

3232
<ItemGroup>
3333
<PackageReference Include="FreeRedis" Version="1.2.0" />
34-
<ProjectReference Include="..\Cyaim.WebSocketServer\Cyaim.WebSocketServer.csproj" />
34+
<ProjectReference Include="..\..\Cyaim.WebSocketServer\Cyaim.WebSocketServer.csproj" />
3535
</ItemGroup>
3636

3737
<ItemGroup>
38-
<None Include="..\..\LICENSE">
38+
<None Include="..\..\..\LICENSE">
3939
<Pack>True</Pack>
4040
<PackagePath>\</PackagePath>
4141
</None>
42-
<None Include="..\Cyaim.WebSocketServer\WebSocketRepository_Logo.png">
42+
<None Include="..\..\Cyaim.WebSocketServer\WebSocketRepository_Logo.png">
4343
<Pack>True</Pack>
4444
<PackagePath></PackagePath>
4545
</None>

Cyaim.WebSocketServer/Cyaim.WebSocketServer.Cluster.FreeRedis/FreeRedisClusterTransport.cs renamed to Cyaim.WebSocketServer/Cluster/Cyaim.WebSocketServer.Cluster.FreeRedis/FreeRedisClusterTransport.cs

Lines changed: 48 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,16 @@ namespace Cyaim.WebSocketServer.Cluster.FreeRedis
1818
/// </summary>
1919
public class FreeRedisClusterTransport : IClusterTransport
2020
{
21+
/// <summary>
22+
/// Redis channel prefix for node-specific messages / Redis 节点特定消息的通道前缀
23+
/// </summary>
24+
private const string ClusterNodeChannelPrefix = "cluster:node:";
25+
26+
/// <summary>
27+
/// Redis channel name for broadcast messages / Redis 广播消息的通道名称
28+
/// </summary>
29+
private const string ClusterBroadcastChannel = "cluster:broadcast";
30+
2131
private readonly ILogger<FreeRedisClusterTransport> _logger;
2232
private readonly string _nodeId;
2333
private readonly string _connectionString;
@@ -70,11 +80,24 @@ public async Task StartAsync()
7080
_redis = new RedisClient(_connectionString);
7181

7282
// Subscribe to node-specific channel / 订阅节点特定通道
73-
_redis.Subscribe($"cluster:node:{_nodeId}", (channel, message) =>
83+
_redis.Subscribe($"{ClusterNodeChannelPrefix}{_nodeId}", (channel, message) =>
7484
{
7585
try
7686
{
77-
var clusterMessage = JsonSerializer.Deserialize<ClusterMessage>(message);
87+
var messageJson = message?.ToString();
88+
if (string.IsNullOrEmpty(messageJson))
89+
{
90+
_logger.LogWarning("Received empty message from FreeRedis");
91+
return;
92+
}
93+
94+
var clusterMessage = JsonSerializer.Deserialize<ClusterMessage>(messageJson);
95+
if (clusterMessage == null)
96+
{
97+
_logger.LogWarning("Failed to deserialize cluster message from FreeRedis");
98+
return;
99+
}
100+
78101
MessageReceived?.Invoke(this, new ClusterMessageEventArgs
79102
{
80103
FromNodeId = clusterMessage.FromNodeId,
@@ -88,11 +111,24 @@ public async Task StartAsync()
88111
});
89112

90113
// Subscribe to broadcast channel / 订阅广播通道
91-
_redis.Subscribe("cluster:broadcast", (channel, message) =>
114+
_redis.Subscribe(ClusterBroadcastChannel, (channel, message) =>
92115
{
93116
try
94117
{
95-
var clusterMessage = JsonSerializer.Deserialize<ClusterMessage>(message);
118+
var messageJson = message?.ToString();
119+
if (string.IsNullOrEmpty(messageJson))
120+
{
121+
_logger.LogWarning("Received empty broadcast message from FreeRedis");
122+
return;
123+
}
124+
125+
var clusterMessage = JsonSerializer.Deserialize<ClusterMessage>(messageJson);
126+
if (clusterMessage == null)
127+
{
128+
_logger.LogWarning("Failed to deserialize cluster broadcast message from FreeRedis");
129+
return;
130+
}
131+
96132
if (clusterMessage.FromNodeId != _nodeId)
97133
{
98134
MessageReceived?.Invoke(this, new ClusterMessageEventArgs
@@ -131,8 +167,8 @@ public async Task StopAsync()
131167
{
132168
if (_redis != null)
133169
{
134-
_redis.UnSubscribe($"cluster:node:{_nodeId}");
135-
_redis.UnSubscribe("cluster:broadcast");
170+
_redis.UnSubscribe($"{ClusterNodeChannelPrefix}{_nodeId}");
171+
_redis.UnSubscribe(ClusterBroadcastChannel);
136172
_redis.Dispose();
137173
_redis = null;
138174
}
@@ -163,13 +199,13 @@ public async Task SendAsync(string nodeId, ClusterMessage message)
163199

164200
try
165201
{
166-
if (_redis == null || !_redis.IsConnected)
202+
if (_redis == null)
167203
{
168-
_logger.LogWarning("FreeRedis client is not initialized or connected");
204+
_logger.LogWarning("FreeRedis client is not initialized");
169205
return;
170206
}
171207

172-
_redis.Publish($"cluster:node:{nodeId}", messageJson);
208+
_redis.Publish($"{ClusterNodeChannelPrefix}{nodeId}", messageJson);
173209

174210
_logger.LogDebug($"Sent message to node {nodeId} via FreeRedis");
175211
}
@@ -193,13 +229,13 @@ public async Task BroadcastAsync(ClusterMessage message)
193229

194230
try
195231
{
196-
if (_redis == null || !_redis.IsConnected)
232+
if (_redis == null)
197233
{
198-
_logger.LogWarning("FreeRedis client is not initialized or connected");
234+
_logger.LogWarning("FreeRedis client is not initialized");
199235
return;
200236
}
201237

202-
_redis.Publish("cluster:broadcast", messageJson);
238+
_redis.Publish(ClusterBroadcastChannel, messageJson);
203239

204240
_logger.LogDebug("Broadcasted message via FreeRedis");
205241
}

Cyaim.WebSocketServer/Cyaim.WebSocketServer.Cluster.FreeRedis/FreeRedisClusterTransportFactory.cs renamed to Cyaim.WebSocketServer/Cluster/Cyaim.WebSocketServer.Cluster.FreeRedis/FreeRedisClusterTransportFactory.cs

File renamed without changes.

Cyaim.WebSocketServer/Cyaim.WebSocketServer.Cluster.Hybrid.Implementations/Cyaim.WebSocketServer.Cluster.Hybrid.Implementations.csproj renamed to Cyaim.WebSocketServer/Cluster/Cyaim.WebSocketServer.Cluster.Hybrid.Implementations/Cyaim.WebSocketServer.Cluster.Hybrid.Implementations.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,11 @@
3737
</ItemGroup>
3838

3939
<ItemGroup>
40-
<None Include="..\..\LICENSE">
40+
<None Include="..\..\..\LICENSE">
4141
<Pack>True</Pack>
4242
<PackagePath>\</PackagePath>
4343
</None>
44-
<None Include="..\Cyaim.WebSocketServer\WebSocketRepository_Logo.png">
44+
<None Include="..\..\Cyaim.WebSocketServer\WebSocketRepository_Logo.png">
4545
<Pack>True</Pack>
4646
<PackagePath></PackagePath>
4747
</None>

0 commit comments

Comments
 (0)