void AddServer() { SendAddServer sendAddServer = new SendAddServer(); sendAddServer.openid = GameInfo.OpenID; sendAddServer.unionid = GameInfo.unionid; byte[] body = ProtobufUtility.GetByteFromProtoBuf(sendAddServer); byte[] data = CreateHead.CreateMessage(CreateHead.CSXYNUM + 1011, body.Length, 0, body); GameInfo.cs.Send(data); }
public void ReconServer() { GameInfo.cs.Closed(); SendAddServer sendAddServer = new SendAddServer(); sendAddServer.openid = GameInfo.OpenID; sendAddServer.unionid = GameInfo.unionid; byte[] body = ProtobufUtility.GetByteFromProtoBuf(sendAddServer); byte[] data = CreateHead.CreateMessage(CreateHead.CSXYNUM + 1011, body.Length, 0, body); GameInfo.cs.Send(data); ficSGame.isRecon = true; }
/// <summary> /// 加入服务器 /// </summary> /// <param name="session"></param> /// <param name="requestInfo"></param> public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo) { SendAddServer sendInfo = SendAddServer.ParseFrom(requestInfo.Body); var key = RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERINFO, sendInfo.Openid, sendInfo.Unionid); var userInfo = RedisUtility.Get <RedisUserInfoModel>(key); var returnAddServer = ReturnAddServer.CreateBuilder(); if (userInfo == null) { returnAddServer.SetStatus(2); } else { returnAddServer.SetStatus(1); var info = Gongyong.userlist.Find(w => w.openid.Equals(userInfo.Openid)); if (info == null) { var user = new UserInfo(userInfo); user.session = session; Gongyong.userlist.Add(user); session.Logger.Debug("加入游戏服务器成功----" + sendInfo.Openid + "------" + DateTime.Now); } else { info.nickname = userInfo.Nickname; info.sex = userInfo.Sex; info.headimg = userInfo.Headimg; if (info.session != null) { info.session.Close(); } info.session = session; mjuser mju = Gongyong.mulist.Find(u => u.Openid == info.openid); if (mju != null) { mju.ConnectionStatus = 1; // SendCL(session, info.openid, requestInfo); } } } var data = returnAddServer.Build().ToByteArray(); session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1012, data.Length, requestInfo.MessageNum, data))); }
private void CreatNewSocket(ReturnServerIP returnServerIP, Socket sc, string openID) { sc.Close(); IPAddress ipaddress; EndPoint point; sc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); ipaddress = IPAddress.Parse(returnServerIP.Ip); point = new IPEndPoint(ipaddress, int.Parse(returnServerIP.Port)); sc.Connect(point); SendAddServer sendAddServer = SendAddServer.CreateBuilder() .SetOpenid(openID) .SetUnionid(openID) .Build(); byte[] body = sendAddServer.ToByteArray(); byte[] data = CreateHead.CreateMessage(CreateHead.CSXYNUM + 1011, body.Length, 0, body); sc.Send(data); }
// Update is called once per frame void Update() { //如果房卡不为0,将房卡数量和服务器的同步 if (GameInfo.returnGetRoomCard != null) { GameInfo.userRoomCard = GameInfo.returnGetRoomCard.UserRoomCard; RoomCardNum.text = GameInfo.userRoomCard + ""; GameInfo.returnGetRoomCard = null; } //从服务器获取公告信息 if (GameInfo.returnAnnouncement != null) { GameInfo.announcementInfo = GameInfo.returnAnnouncement.announcement; GameInfo.returnAnnouncement = null; } if (GameInfo.returnServerIP != null) { GameInfo.ip = GameInfo.returnServerIP.ip; GameInfo.port = GameInfo.returnServerIP.port; //状态 1为正常跳转, 2为有未结束的游戏,需要重新连接 GameInfo.status = GameInfo.returnServerIP.Status; GameInfo.cs.Closed(); SendAddServer sendAddServer = new SendAddServer();//..CreateBuilder() sendAddServer.openid = GameInfo.OpenID; sendAddServer.unionid = GameInfo.unionid; Debug.Log(GameInfo.OpenID); byte[] body = ProtobufUtility.GetByteFromProtoBuf(sendAddServer); byte[] data = CreateHead.CreateMessage(CreateHead.CSXYNUM + 1011, body.Length, 0, body); GameInfo.cs.serverType = ServerType.GameServer; GameInfo.cs.Send(data); //重连提示 if (GameInfo.status == 2) { GameInfo.room_id = int.Parse(GameInfo.returnServerIP.RoomID); Recon_Pel.SetActive(true); //应该重连 GameInfo.recon = true; isClosed = true; print("断线重连"); //提示用户有断线重联的情况, 跳转场景 reconTip.SetActive(true); //3秒后跳转至游戏场景 Invoke("ReEnterRoom", 3); } GameInfo.returnServerIP = null; } //获取服务器状态 if (GameInfo.returnAddServer != null) { GameInfo.addStatus = GameInfo.returnAddServer.status; GameInfo.returnAddServer = null; } //监听退出键 if (Input.GetKeyUp(KeyCode.Escape)) { FICWaringPanel._instance.ShowQuit(); FICWaringPanel._instance.WarnningMethods = delegate { Application.Quit(); }; } if (GameInfo.returnGameOperation != null) { ShowOperationStatus(); } }