fix: improve minigame reconnect flow

This commit is contained in:
ud18010
2026-07-29 19:30:50 +08:00
parent 6a5e534d00
commit 42c3874d82
21 changed files with 979 additions and 52 deletions
+5 -2
View File
@@ -1,3 +1,4 @@
using System;
using System.Collections.Generic;
using XWorld.Framework;
using XWorld.Framework.Protocol;
@@ -11,14 +12,16 @@ namespace XWorld.Server.Gateway
private readonly string _roomId; // 保留作诊断/日志标识
private readonly IReadOnlyList<int> _players;
private readonly SessionManager _sessions;
private readonly Action<NetMessage> _onBroadcast;
public RoomOutputSink(string roomId, IReadOnlyList<int> players, SessionManager sessions)
public RoomOutputSink(string roomId, IReadOnlyList<int> players, SessionManager sessions, Action<NetMessage> onBroadcast = null)
{
_roomId = roomId; _players = players; _sessions = sessions;
_roomId = roomId; _players = players; _sessions = sessions; _onBroadcast = onBroadcast;
}
public void Broadcast(NetMessage message)
{
_onBroadcast?.Invoke(message);
byte[] frame = FrameCodec.Encode(new Frame(Channel.Game, message.Opcode, message.Payload));
foreach (var pid in _players)
_sessions.GetConnection(pid)?.Send(frame);