Example #1
0
        /**
         * 牌桌发送聊天消息
         */
        public void RoomTableChatReq(byte[] body)
        {
            RoomTableChatReq roomTableChatReq = new RoomTableChatReq();

            roomTableChatReq.Id   = MainData.Instance().tableInfo.Id;
            roomTableChatReq.Body = ByteString.AttachBytes(body);

            NetCore.Instance.Send(Api.ENetMsgId.room_table_chat_req, roomTableChatReq);
        }
Example #2
0
    public static IEnumerator Post(string url, CSLinkInfo csLinkInfo, int timeout, Action <string, int, long> OnSucc, Action <WebErrorCode> OnError)
    {
        byte[]      byteData = ProtoSerAndUnSer.Serialize(csLinkInfo);
        CSServerReq req      = new CSServerReq {
            Data = ByteString.AttachBytes(byteData), OpCode = OpCodeType.GetConnectServer
        };

        byte[]  sendData = ProtoSerAndUnSer.Serialize(req);
        WWWForm from     = new WWWForm();

        UnityWebRequest request = new UnityWebRequest(url, UnityWebRequest.kHttpVerbPOST)
        {
            uploadHandler   = new UploadHandlerRaw(sendData),
            downloadHandler = new DownloadHandlerBuffer(),
            timeout         = timeout
        };

        request.SetRequestHeader("Content-Type", "multipart/form-data");
        yield return(request.SendWebRequest());

        //拿到信息
        SCServerRes data = ProtoSerAndUnSer.UnSerialize <SCServerRes>(request.downloadHandler.data);

        if (data == null)
        {
            Debug.LogError("网关异常");
            OnError?.Invoke(new WebErrorCode());
            yield break;
        }
        if (data.Data != null && data.Code == (int)WebErrorCode.Success)
        {
            SCLinkInfo info = ProtoSerAndUnSer.UnSerialize <SCLinkInfo>(data.Data.ToByteArray());
            Debug.Log(info);
            if (info != null)
            {
                string ip = StaticData.IntToIp((long)info.Ip);
                OnSucc?.Invoke(ip, info.Port, info.Uid);
            }
        }
        else
        {
            OnError?.Invoke((WebErrorCode)data.Code);
        }
    }
Example #3
0
        public void SendToServerByPB(NFMsg.EGameMsgID unMsgID, MemoryStream stream)
        {
            NFMsg.MsgBase xData = new NFMsg.MsgBase();
            xData.player_id = mHelpModule.NFToPB(mOwnerID);
            xData.msg_data  = ByteString.AttachBytes(stream.ToArray());

            MemoryStream body = new MemoryStream();

            xData.WriteTo(body);

            MemoryStream pack   = new MemoryStream();
            BinaryWriter writer = new BinaryWriter(pack);
            UInt32       msgLen = (UInt32)body.Length + (UInt32)ConstDefine.NF_PACKET_HEAD_SIZE;

            writer.Write(NFCNet.ConvertUint16((UInt16)unMsgID));
            writer.Write(NFCNet.ConvertUint32((UInt32)msgLen));
            body.WriteTo(pack);

            NFCNet.Instance().sendMsg(pack);
        }
Example #4
0
        //发送消息,先放进队列中
        public void SendMsg(IMessage msg, OpCodeType opCodeType, Action <IMessage> OnSuccess, Action <ErrorInfo> OnFail)//登录的时候记得获取uid
        {
            byte[]      byteData  = ProtoSerAndUnSer.Serialize(msg);
            CSServerReq serverReq = new CSServerReq()
            {
                Data = ByteString.AttachBytes(byteData), OpCode = opCodeType, Uid = StaticData.Uid
            };

            //序列化serverReq
            byte[] finalData = ProtoSerAndUnSer.Serialize(serverReq);
            StaticData.DebugGreen($"将要发送消息的消息入队:{msg.ToString()}");
            RequestItem item = new RequestItem()
            {
                msgData     = finalData,
                opCode      = opCodeType,
                onSuccess   = OnSuccess,
                onFail      = OnFail,
                isResponsed = false
            };

            QueueMsgBuiness.Enqueue(item);
        }