fix: improve minigame reconnect flow
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user