using MessagePack; using NanoidDotNet; using System.Text; using XNet.Business.Net; using XNet.Business.PathNavigation; namespace XNet.Business.Manager { public class SceneManager { private readonly WsConnectionManager _wsManager; public SceneManager(WsConnectionManager wsManager) { _wsManager = wsManager; } public async Task GetRoomForStart(string connId, byte[] data) { // 处理订阅实例请求 var startRoomReq = MessagePackSerializer.Deserialize(data); if (startRoomReq != null) { string roomId = startRoomReq.RoomId; //roomId为空时,开启游戏失败,返回 if (string.IsNullOrWhiteSpace(startRoomReq.RoomId)) { return; } var room = _wsManager.GetStartRoomInfoForCondition(roomId, startRoomReq.RoomName); await _wsManager.SendBaseSingleMessage(connId, WsMsgType.GET_ROOM_FOR_START, (room == null ? null : room.RoomId) ); } } public async Task LeaveRoom(string connId, byte[] data) { // 处理订阅实例请求 string roomId = Encoding.UTF8.GetString(data); if (!string.IsNullOrEmpty(roomId)) { //退出所有房间 await _wsManager.LeaveRoom(connId); } } } }