Exemple #1
0
    public void MessageReceive(ProtocolDataModel pdm)
    {
        switch (pdm.Request)
        {
        case IMProtocol.IM_NONE:
            break;

        case IMProtocol.IM_CALL_SRE:
            PeerCall(pdm);
            break;

        case IMProtocol.IM_STATE:
            CallResult(pdm);
            break;

        case IMProtocol.IM_ACCEPT_SRES:
            PeerAccept(pdm);
            break;

        case IMProtocol.IM_HANG_SRES:
            PeerHang(pdm);
            break;

        case IMProtocol.IM_SENMESSAGE_SRES:
            PeerMessage(pdm);
            break;

        default:
            break;
        }
    }
    /// <summary>
    /// 呼叫
    /// </summary>
    /// <param name="callID">呼叫ID</param>
    /// <param name="type">呼叫类型 1:音频 2:视频</param>
    /// <param name="from">呼叫者 ID</param>
    /// <param name="to">被呼叫者ID </param>
    public void Call(string callID, ChatType type, int from, int to)
    {
        if (CallID == "")
        {
            CallID = callID;
            ProtocolDataModel pd = new ProtocolDataModel();
            pd.Type    = ProtocolType.TYPE_IM;
            pd.Request = IMProtocol.IM_CALL_CRE;

            IMInfo info = new IMInfo();
            info.UserName = UserName;
            info.UserID   = UserID;
            info.CallID   = callID;
            info.CallType = (int)type;

            ChatDataHandler.Instance.ChatType = type;

            info.PeerID = to;
            ChatPeerID  = to;

            using (MemoryStream stream = new MemoryStream())
            {
                info.WriteTo(stream);
                pd.Message = stream.ToArray();
            }
            NetWorkManager.Instance.Send(pd);
        }
    }
Exemple #3
0
    internal void OnReceivePeerMessage(ProtocolDataModel pdm)
    {
        IMInfo info = IMInfo.Parser.ParseFrom(pdm.Message);

        MessagePeerName = info.UserName;

        MessageType tyep = (MessageType)info.MessageData[0];

        byte[] data = new byte[info.MessageData.Length - 1];
        Buffer.BlockCopy(info.MessageData.ToByteArray(), 1, data, 0, data.Length);
        switch (tyep)
        {
        case MessageType.Text:
            OnReciveText?.Invoke(data);
            break;

        case MessageType.Pic:
            OnRecivePic?.Invoke(data);
            break;

        case MessageType.Voice:
            OnReciveVoice?.Invoke(data);
            break;

        default:
            break;
        }
    }
Exemple #4
0
    public void SendPeerMessage(byte[] message, MessageType t)
    {
        byte[] type = new byte[1] {
            (byte)t
        };
        byte[] data = new byte[message.Length + 1];
        Buffer.BlockCopy(type, 0, data, 0, 1);
        Buffer.BlockCopy(message, 0, data, 1, message.Length);

        IMInfo info = new IMInfo();

        info.UserID   = ChatManager.Instance.UserID;
        info.PeerID   = ChatUIManager.Instance.SelectFriendID;
        info.UserName = ChatManager.Instance.UserName;

        info.MessageData = ByteString.CopyFrom(data);

        ProtocolDataModel pd = new ProtocolDataModel();

        pd.Type    = ProtocolType.TYPE_IM;
        pd.Request = IMProtocol.IM_SENMESSAGE_CRES;
        pd.Message = info.ToByteArray();

        NetWorkManager.Instance.Send(pd);
    }
    /// <summary>
    /// 挂断
    /// </summary>
    public void Hang()
    {
        if (CallID != 0)
        {
            ProtocolDataModel pd = new ProtocolDataModel();
            pd.Type    = ProtocolType.TYPE_IM;
            pd.Request = IMProtocol.IM_HANG_CRES;

            IMInfo info = new IMInfo();
            info.PeerID = ChatPeerID;
            pd.Message  = info.ToByteArray();

            NetWorkManager.Instance.Send(pd);

            //send udp hang
            CallInfo callInfo = new CallInfo();
            callInfo.CallID = CallID;

            UdplDataModel model = new UdplDataModel();
            model.Request      = RequestByte.REQUEST_HANG;
            model.ChatInfoData = callInfo.ToByteArray();
            byte[] data = UdpMessageCodec.Encode(model);

            UdpSocketManager.Instance.Send(UdpMessageCodec.Encode(model));

            //结束udp传输
            ChatDataHandler.Instance.StopChat();

            CallID = 0;
        }
    }
Exemple #6
0
    private void CallResult(ProtocolDataModel pdm)
    {
        ResultCode code = (ResultCode)(BitConverter.ToInt32(pdm.Message, 0));

        print("Call Result:" + code.ToString());
        MessageManager._instance.ShowMessage("Call Result:" + code.ToString());
        ChatUIManager.Instance.CallResult(code == ResultCode.RESULT_ONLINE);
    }
Exemple #7
0
 void Update()
 {
     if (receiveDataList.Count > 0)
     {
         ProtocolDataModel model = pdmDecode(receiveDataList.Dequeue());
         StartCoroutine("MessageReceive", model);
     }
 }
    /// <summary>
    /// 获取在线列表
    /// </summary>
    public void GetOnlineUserList()
    {
        ProtocolDataModel pd = new ProtocolDataModel();

        pd.Type    = ProtocolType.TYPE_MYSQL;
        pd.Request = MySqlDataProtocol.MYSQL_ONLINEUSER_CREQ;

        NetWorkManager.Instance.Send(pd);
    }
Exemple #9
0
    ProtocolDataModel pdmDecode(byte[] value)
    {
        ProtocolDataModel pdm = new ProtocolDataModel();

        pdm.Type    = value[0];
        pdm.Request = value[1];
        if (value.Length > 2)
        {
            byte[] message = new byte[value.Length - 2];
            Buffer.BlockCopy(value, 2, message, 0, value.Length - 2);
            pdm.Message = message;
        }
        return(pdm);
    }
Exemple #10
0
    private void peerCall(ProtocolDataModel pdm)
    {
        IMInfo info = ProtobufCodec.DeSerialize <IMInfo>(pdm.Message);

        ChatManager._instance.InviteCome   = true;
        ChatManager._instance.ChatPeerName = info.UserName;
        ChatManager._instance.ChatPeerID   = info.UserID;
        ChatManager._instance.CallID       = info.CallID;

        int type = info.CallType;

        ChatDataHandler.Instance.chatType = type == 1 ? ChatType.Audio : ChatType.AV;

        print("收到通话邀请:" + info.UserName + ",CallID:" + info.CallID);
    }
Exemple #11
0
    private void PeerCall(ProtocolDataModel pdm)
    {
        IMInfo info = IMInfo.Parser.ParseFrom(pdm.Message);

        ChatManager.Instance.InviteCome   = true;
        ChatManager.Instance.ChatPeerName = info.UserName;
        ChatManager.Instance.ChatPeerID   = info.UserID;
        ChatManager.Instance.CallID       = info.CallID;

        int type = info.CallType;

        ChatDataHandler.Instance.ChatType = (ChatType)type;

        print("Receive call:" + info.UserName + ",CallID:" + info.CallID);
    }
Exemple #12
0
    /// <summary>
    /// /登录
    /// </summary>
    /// <param name="account">账号</param>
    /// <param name="password">密码</param>
    public void Login(string account, string password)
    {
        checkConnect();
        ProtocolDataModel pd = new ProtocolDataModel();

        pd.Type    = ProtocolType.TYPE_MYSQL;
        pd.Request = MySqlDataProtocol.MYSQL_LOGIN_CRES;

        LoginInfo info = new LoginInfo();

        info.Account  = account;
        info.Password = password;
        pd.Message    = ProtobufCodec.Serialize(info);
        NetWorkManager.Instance.Send(pd);
    }
    /// <summary>
    /// /登录
    /// </summary>
    /// <param name="account">账号</param>
    /// <param name="password">密码</param>
    public void Login(string userName, int userId = 0)
    {
        ProtocolDataModel pd = new ProtocolDataModel();

        pd.Type    = ProtocolType.TYPE_MYSQL;
        pd.Request = MySqlDataProtocol.MYSQL_LOGIN_CRES;

        LoginInfo info = new LoginInfo();

        info.UserName = userName;
        info.UserID   = userId;
        pd.Message    = info.ToByteArray();

        NetWorkManager.Instance.Send(pd);
    }
Exemple #14
0
    void MessageReceive(ProtocolDataModel pdm)
    {
        switch (pdm.Type)
        {
        case ProtocolType.TYPE_NONE:
            break;

        case ProtocolType.TYPE_MYSQL:
            mySqlHandler.MessageReceive(pdm);
            break;

        case ProtocolType.TYPE_IM:
            imHandler.MessageReceive(pdm);
            break;
        }
    }
Exemple #15
0
    private void Login(ProtocolDataModel pdm)
    {
        if (pdm.Message.Length == 4)
        {
            ResultCode result = (ResultCode)(BitConverter.ToInt32(pdm.Message, 0));
            print("Login result:" + result.ToString());

            bool res = result == ResultCode.RESULT_SUCCESS ? true : false;
            MainUIManager._instance.LoginResult(res);
        }
        else
        {
            UserInfo user = UserInfo.Parser.ParseFrom(pdm.Message);
            ChatManager.Instance.UserID   = user.UserID;
            ChatManager.Instance.UserName = user.UserName;
        }
    }
Exemple #16
0
    /// <summary>
    /// 挂断
    /// </summary>
    public void Hang()
    {
        if (CallID != "")
        {
            CallID = "";
            checkConnect();
            ProtocolDataModel pd = new ProtocolDataModel();
            pd.Type    = ProtocolType.TYPE_IM;
            pd.Request = IMProtocol.IM_HANG_CRES;

            IMInfo info = new IMInfo();
            info.PeerID = ChatPeerID;
            pd.Message  = ProtobufCodec.Serialize(info);
            NetWorkManager.Instance.Send(pd);
            //结束udp传输
            ChatDataHandler.Instance.StopChat();
        }
    }
    /// <summary>
    /// 接听
    /// </summary>
    public void Accept()
    {
        ProtocolDataModel pd = new ProtocolDataModel();

        pd.Type    = ProtocolType.TYPE_IM;
        pd.Request = IMProtocol.IM_ACCEPT_CRES;

        IMInfo info = new IMInfo();

        info.UserName = UserName;
        info.UserID   = UserID;
        info.PeerID   = ChatPeerID;
        //info.CallType = type;
        pd.Message = info.ToByteArray();
        NetWorkManager.Instance.Send(pd);

        //开始udp传输
        ChatDataHandler.Instance.StartChat();
    }
Exemple #18
0
    /// <summary>
    /// /登录
    /// </summary>
    /// <param name="account">账号</param>
    /// <param name="password">密码</param>
    public void Login(string account, string password)
    {
        ProtocolDataModel pd = new ProtocolDataModel();

        pd.Type    = ProtocolType.TYPE_MYSQL;
        pd.Request = MySqlDataProtocol.MYSQL_LOGIN_CRES;

        LoginInfo info = new LoginInfo();

        info.Account  = account;
        info.Password = password;
        using (MemoryStream stream = new MemoryStream())
        {
            info.WriteTo(stream);
            pd.Message = stream.ToArray();
        }

        NetWorkManager.Instance.Send(pd);
    }
Exemple #19
0
    public void MessageReceive(ProtocolDataModel pdm)
    {
        switch (pdm.Request)
        {
        case MySqlDataProtocol.MYSQL_NONE:
            break;

        case MySqlDataProtocol.MYSQL_LOGIN_SRES:
            Login(pdm);
            break;

        case MySqlDataProtocol.MYSQL_ONLINEUSE_SRES:
            GetOnlineUser(pdm);
            break;

        default:
            break;
        }
    }
Exemple #20
0
    private void GetOnlineUser(ProtocolDataModel pdm)
    {
        OnlineUserInfo info = ProtobufCodec.DeSerialize <OnlineUserInfo>(pdm.Message);

        if (info != null)
        {
            ChatManager._instance.OnlineUserList = info.OnlineUserLiset;
        }
        else
        {
            ChatManager._instance.OnlineUserList = new Dictionary <int, string>();
        }


        ChatManager._instance.UserlistUpdate = true;

        int count = info == null ? 0 : info.OnlineUserLiset.Count;

        print("GetOnlineUser:" + count);
    }
Exemple #21
0
    /// <summary>
    /// 挂断
    /// </summary>
    public void Hang()
    {
        if (CallID != "")
        {
            CallID = "";
            ProtocolDataModel pd = new ProtocolDataModel();
            pd.Type    = ProtocolType.TYPE_IM;
            pd.Request = IMProtocol.IM_HANG_CRES;

            IMInfo info = new IMInfo();
            info.PeerID = ChatPeerID;
            using (MemoryStream stream = new MemoryStream())
            {
                info.WriteTo(stream);
                pd.Message = stream.ToArray();
            }
            NetWorkManager.Instance.Send(pd);
            //结束udp传输
            ChatDataHandler.Instance.StopChat();
        }
    }
    /// <summary>
    /// 呼叫
    /// </summary>
    /// <param name="callID">呼叫ID</param>
    /// <param name="type">呼叫类型 1:音频 2:视频</param>
    /// <param name="from">呼叫者 ID</param>
    /// <param name="to">被呼叫者ID </param>
    public void Call(long callID, ChatType type, int from, int to)
    {
        if (CallID == 0)
        {
            CallID = callID;
            ProtocolDataModel pd = new ProtocolDataModel();
            pd.Type    = ProtocolType.TYPE_IM;
            pd.Request = IMProtocol.IM_CALL_CRE;

            IMInfo info = new IMInfo();
            info.UserName = UserName;
            info.UserID   = UserID;
            info.CallID   = callID;
            info.CallType = (int)type;

            ChatDataHandler.Instance.ChatType = type;

            info.PeerID = to;
            ChatPeerID  = to;
            pd.Message  = info.ToByteArray();
            NetWorkManager.Instance.Send(pd);
        }
    }
Exemple #23
0
    /// <summary>
    /// 接听
    /// </summary>
    public void Accept()
    {
        ProtocolDataModel pd = new ProtocolDataModel();

        pd.Type    = ProtocolType.TYPE_IM;
        pd.Request = IMProtocol.IM_ACCEPT_CRES;

        IMInfo info = new IMInfo();

        info.UserName = UserName;
        info.UserID   = UserID;
        info.PeerID   = ChatPeerID;
        //info.CallType = type;
        using (MemoryStream stream = new MemoryStream())
        {
            info.WriteTo(stream);
            pd.Message = stream.ToArray();
        }
        NetWorkManager.Instance.Send(pd);

        //开始udp传输
        ChatDataHandler.Instance.StartChat();
    }
Exemple #24
0
    private void GetOnlineUser(ProtocolDataModel pdm)
    {
        OnlineUserInfo info = OnlineUserInfo.Parser.ParseFrom(pdm.Message);

        if (info != null)
        {
            ChatManager.Instance.OnlineUserList.Clear();
            for (int i = 0; i < info.UserList.Count; i++)
            {
                ChatManager.Instance.OnlineUserList.Add(info.UserList[i].UserID, info.UserList[i].UserName);
            }
        }
        else
        {
            ChatManager.Instance.OnlineUserList = new Dictionary <int, string>();
        }


        ChatManager.Instance.UserlistUpdate = true;

        int count = info == null ? 0 : info.UserList.Count;

        print("GetOnlineUser:" + count);
    }
Exemple #25
0
    /// <summary>
    /// 呼叫
    /// </summary>
    /// <param name="callID">呼叫ID</param>
    /// <param name="type">呼叫类型 1:音频 2:视频</param>
    /// <param name="from">呼叫者 ID</param>
    /// <param name="to">被呼叫者ID </param>
    public void Call(string callID, int type, int from, int to)
    {
        if (CallID == "")
        {
            CallID = callID;
            checkConnect();
            ProtocolDataModel pd = new ProtocolDataModel();
            pd.Type    = ProtocolType.TYPE_IM;
            pd.Request = IMProtocol.IM_CALL_CRE;

            IMInfo info = new IMInfo();
            info.UserName = UserName;
            info.UserID   = UserID;
            info.CallID   = callID;

            info.CallType = type;
            ChatDataHandler.Instance.chatType = type == 1 ? ChatType.Audio : ChatType.AV;

            info.PeerID = to;
            ChatPeerID  = to;
            pd.Message  = ProtobufCodec.Serialize(info);
            NetWorkManager.Instance.Send(pd);
        }
    }
    private void Register(ProtocolDataModel pdm)
    {
        ResultCode result = (ResultCode)(BitConverter.ToInt32(pdm.Message, 0));

        print("Register result:" + result.ToString());
    }
Exemple #27
0
 private void PeerAccept(ProtocolDataModel pdm)
 {
     print("Peer Accept");
     ChatManager.Instance.UserComeIn = true;
 }
Exemple #28
0
 private void PeerHang(ProtocolDataModel pdm)
 {
     print("Peer Hang");
     ChatUIManager.Instance.Hang();
 }
Exemple #29
0
 private void PeerMessage(ProtocolDataModel pdm)
 {
     print("Receive message:" + pdm.Message.Length);
 }
 private void PeerMessage(ProtocolDataModel pdm)
 {
     print("Receive message:" + pdm.Message.Length);
     ChatSendMessageManager.Instance?.OnReceivePeerMessage(pdm);
 }