示例#1
0
        static void Client( )
        {
            Console.WriteLine("client");


            var ed = new EventDispatcher();

            var codec = new ProtobufCodec();

            var peer = new Connector(ed.Queue, codec).Start("127.0.0.1:7010");

            //var peer = new Connector(ed.Queue, codec).Start("192.168.0.138:8000");
            Subscribe.RegisterMessage <gamedef.SessionConnected>(ed, (msg, ses) =>
            {
                Console.WriteLine("SessionConnected");

                var ack     = new gamedef.TestEchoACK();
                ack.Content = "client";
                ses.Send(ack);
            });


            Subscribe.RegisterMessage <gamedef.TestEchoACK>(ed, (msg, ses) =>
            {
                var ack     = new gamedef.TestEchoACK();
                ack.Content = "hello";
                ses.Send(ack);
            });

            ed.Start();

            ed.Wait();
        }
示例#2
0
        static void Server( )
        {
            Console.WriteLine("server");

            var ed = new EventDispatcher();

            var codec = new ProtobufCodec();

            var peer = new Acceptor(ed.Queue, codec).Start("127.0.0.1:7010");

            Subscribe.RegisterMessage <gamedef.SessionAccepted>(ed, (msg, ses) =>
            {
                Console.WriteLine("SessionAccepted");
            });

            var meter = new QPSMeter(ed, (qps) =>
            {
                Console.WriteLine("qps: {0}", qps);
            });

            Subscribe.RegisterMessage <gamedef.TestEchoACK>(ed, (msg, ses) =>
            {
                meter.Acc();

                ses.Send(msg);
            });

            ed.Start();

            ed.Wait();
        }
示例#3
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);
    }
示例#4
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);
    }
示例#5
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();
        }
    }
示例#6
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 = ProtobufCodec.DeSerialize <UserInfo>(pdm.Message);
            ChatManager._instance.UserID       = user.UserID;
            ChatManager._instance.UserName     = user.UserName;
            ChatManager._instance.UserPortrait = user.UserPortrait;
        }
    }
示例#7
0
    /// <summary>
    /// 接听
    /// </summary>
    public void Accept()
    {
        checkConnect();
        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 = ProtobufCodec.Serialize(info);
        NetWorkManager.Instance.Send(pd);

        //开始udp传输
        ChatDataHandler.Instance.StartChat();
    }
示例#8
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);
    }
示例#9
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);
        }
    }