diff --git a/DysonNetwork.Ring/Connection/WebSocketService.cs b/DysonNetwork.Ring/Connection/WebSocketService.cs index 62c8233..6e793fa 100644 --- a/DysonNetwork.Ring/Connection/WebSocketService.cs +++ b/DysonNetwork.Ring/Connection/WebSocketService.cs @@ -141,12 +141,17 @@ public class WebSocketService try { var endpoint = packet.Endpoint.Replace("DysonNetwork.", "").ToLower(); - await _nats.PublishAsync(WebSocketPacketEvent.SubjectPrefix + endpoint, new WebSocketPacketEvent - { - AccountId = Guid.Parse(currentUser.Id), - DeviceId = deviceId, - PacketBytes = packet.ToBytes() - }); + await _nats.PublishAsync( + WebSocketPacketEvent.SubjectPrefix + endpoint, + GrpcTypeHelper + .ConvertObjectToByteString(new WebSocketPacketEvent + { + AccountId = Guid.Parse(currentUser.Id), + DeviceId = deviceId, + PacketBytes = packet.ToBytes() + }).ToBase64() + ); + return; } catch (Exception ex) { @@ -165,4 +170,4 @@ public class WebSocketService CancellationToken.None ); } -} +} \ No newline at end of file diff --git a/DysonNetwork.Sphere/Startup/BroadcastEventHandler.cs b/DysonNetwork.Sphere/Startup/BroadcastEventHandler.cs index 3bafb9e..5ad0837 100644 --- a/DysonNetwork.Sphere/Startup/BroadcastEventHandler.cs +++ b/DysonNetwork.Sphere/Startup/BroadcastEventHandler.cs @@ -173,12 +173,13 @@ public class BroadcastEventHandler( private async Task HandleWebSocketPackets(CancellationToken stoppingToken) { - await foreach (var msg in nats.SubscribeAsync( + await foreach (var msg in nats.SubscribeAsync( WebSocketPacketEvent.SubjectPrefix + "sphere", cancellationToken: stoppingToken)) { try { - var evt = msg.Data; + var evt = JsonSerializer.Deserialize(msg.Data, GrpcTypeHelper.SerializerOptions); + if (evt == null) throw new ArgumentNullException(nameof(evt)); var packet = WebSocketPacket.FromBytes(evt.PacketBytes); switch (packet.Type) {