Example #1
0
        private async void Page_Loaded(object sender, RoutedEventArgs e)
        {
            Title           = InviteFriend.Name;
            friendname.Text = InviteFriend.Name;
            if (InviteFriend.Online)
            {
                friendname.Foreground = new SolidColorBrush(Colors.LimeGreen);
            }
            else
            {
                friendname.Foreground = new SolidColorBrush(Colors.DarkGray);
            }
            try
            {
                //邀请别人的话就创建新的会话==》TODO:不创建新的会话,并且可以查看聊天记录
                Conversation = await User.CreateConversationAsync(InviteFriend.Friend.ObjectId, name : "conmunicate", isUnique : true);

                //监听消息
                User.OnMessageReceived += OnMessageReceived;
                //绑定消息
                received.ItemsSource = InviteFriend.MessageList;
            }
            catch (Exception err)
            {
                MessageBox.Show(err.ToString());
            }
        }
Example #2
0
        private async void Window_Loaded(object sender, RoutedEventArgs e)
        {
            //初始化登录用户信息
            usernameheader.Text = AVUser.CurrentUser.Username[0].ToString();
            username.Text       = AVUser.CurrentUser.Username;
            useremail.Text      = AVUser.CurrentUser.Email;
            //初始化即时通讯服务
            try
            {
                Websockets.Net.WebsocketConnection.Link();
                Realtime = new AVRealtime(new AVRealtime.Configuration
                {
                    ApplicationId  = "EthsHELtLfXL9XBqcFfzMrPO-gzGzoHsz",
                    ApplicationKey = "xODJ808fAD8hpLHlblQhk0t1",
                    //可以有
                    RTMRouter = new Uri("https://ethshelt.lc-cn-n1-shared.com"),
                    OfflineMessageStrategy = AVRealtime.OfflineMessageStrategy.Default
                });
                //注册自定义消息
                Realtime.RegisterMessageType <NoticeMessage>();
                //注册离线消息监听
                Realtime.OnOfflineMessageReceived += OnOfflineMessageReceived;
                //登录Client
                User = await Realtime.CreateClientAsync(AVUser.CurrentUser);

                if (AVUser.CurrentUser.Get <string>("Friends") == "null")
                {
                    //如果是第一次登录给用户添加Friends的ConversationId
                    AVIMConversation Myfriends = await User.CreateConversationAsync(member : null, name : AVUser.CurrentUser.Username + "的小伙伴们", isUnique : false);

                    AVUser.CurrentUser["Friends"] = Myfriends.ConversationId;
                    await AVUser.CurrentUser.SaveAsync();
                }
                //获取FriendsConversation
                FriendsConversation = await User.GetConversationAsync(AVUser.CurrentUser.Get <string>("Friends"));

                //上线后给所有的好友发送“我上线了”的notice
                NoticeMessage notice = new NoticeMessage
                {
                    Notice = "我上线啦"
                };
                await FriendsConversation.SendMessageAsync(notice);

                //绑定listbox数据
                BindingFriendListSrouce();
                //添加好友事件监听(好友邀请事件:同意,拒绝,好友邀请反馈事件:同意)
                User.OnInvited += OnInvited;
                //被删除事件监听
                User.OnKicked += OnKicked;
                //好友操作事件监听(删除好友,好友邀请反馈事件:拒绝)==》TODO:未完成
                //User.OnMembersLeft += OnMembersLeft;
                //User.OnMembersJoined += OnMembersJoined;
                User.OnMessageReceived += OnMessageReceived;
            }
            catch (Exception err)
            {
                MessageBox.Show(err.ToString());
            }
        }
        private async void btn_createConversation_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(txb_friendId.Text.Trim()))
            {
                return;
            }
            if (selfClient != null)
            {
                var con_name     = selfClient.ClientId + " & " + txb_friendId.Text.Trim();
                var conversation = await selfClient.CreateConversationAsync(txb_friendId.Text.Trim(), con_name);

                conversations.Add(conversation);

                Log("对话 " + con_name + " 创建成功;");
            }
        }
    void CreateLobby()
    {
        if (!Application.isPlaying)
        {
            Debug.LogError("Run this only in play mode");
            return;
        }
        AVIMClient zhouyu = null;

        _avRealtime.CreateClientAsync("9999").ContinueWith(t => { zhouyu = t.Result; }).ContinueWith(s =>
        {
            // 关键参数是 isTransient: true
            zhouyu.CreateConversationAsync(
                name: "游戏大厅",
                isTransient: true).ContinueWith(t => { Debug.Log(t.Result.ConversationId); });
        });
    }
Example #5
0
        private async void Btnadd_Click(object sender, RoutedEventArgs e)
        {
            if (IsSuccess)
            {
                try
                {
                    AVUser friend = await AVUser.Query.WhereEqualTo("username", friendname.Text).FirstAsync();

                    //先检查对方是否已经为好友
                    if (Conversation.MemberIds.Contains(friend.ObjectId))
                    {
                        MessageBox.Show("你们已经是好友啦");
                    }

                    else
                    {
                        //不是好友再检测对方是否在线
                        List <string> friends = new List <string>
                        {
                            friend.ObjectId
                        };
                        if ((await User.PingAsync(targetClientIds: friends)).First().Item2)
                        {
                            //在线
                            await User.CreateConversationAsync(friend.ObjectId, isUnique : true);

                            MessageBox.Show("添加成功,等待对方确认");
                            Close();
                        }
                        else
                        {
                            //不在线
                            MessageBox.Show("对方不在线,请稍后重试");
                        }
                    }
                }
                catch (AVException error)
                {
                    MessageBox.Show(error.Message);
                }
            }
            else
            {
                Friendname_LostFocus(new object(), new RoutedEventArgs());
            }
        }
        public void Create_Conversation()
        {
            AVClient.Initialize("uay57kigwe0b6f5n0e1d4z4xhydsml3dor24bzwvzr57wdap", "kfgz7jjfsk55r5a8a3y4ttd3je1ko11bkibcikonk32oozww");
            var client = new AVIMClient("Tom");

            client.UseLeanEngineSignatureFactory();
            AVIMConversation convseation = new AVIMConversation()
            {
                Name        = "xman",
                IsTransient = false,
            };

            convseation.MemberIds = new List <string>();
            convseation.MemberIds.Add("Jerry");

            client.ConnectAsync().ContinueWith(_ =>
            {
                client.CreateConversationAsync(convseation, true).Wait();
            }).Wait();
        }
Example #7
0
 private async void btn_create_Click(object sender, EventArgs e)
 {
     //var isTransient = ckb_isTransient.Checked;
     conversation = await client.CreateConversationAsync(txb_friend.Text.Trim());
 }
Example #8
0
        static void Test()
        {
            //var appId = "nb4egfMaDOj6jzqRhBuWpk5m-gzGzoHsz";
            //var appKey = "zJ4aUsCraV6eBE6dGHWYE57z";

            var appId  = "Eohx7L4EMfe4xmairXeT7q1w-gzGzoHsz";
            var appKey = "GSBSGpYH9FsRdCss8TGQed0F";

            AVIMConversation conv = null;

            Console.WriteLine($"test at {Thread.CurrentThread.ManagedThreadId}");
            AVClient.Initialize(appId, appKey);
            AVRealtime realtime = new AVRealtime(new AVRealtime.Configuration {
                ApplicationId  = appId,
                ApplicationKey = appKey,
                //RealtimeServer = new Uri("wss://rtm51.leancloud.cn/"),
            });

            realtime.CreateClientAsync("lean").ContinueWith(t => {
                if (t.IsFaulted)
                {
                    Console.WriteLine($"create client failed at {Thread.CurrentThread.ManagedThreadId}");
                    throw t.Exception;
                }
                Console.WriteLine($"create client at {Thread.CurrentThread.ManagedThreadId}");
                AVIMClient client         = t.Result;
                client.OnMessageReceived += (sender, e) => {
                    Console.WriteLine($"{e.Message.Id} is received at {Thread.CurrentThread.ManagedThreadId}");
                };
                client.OnMessageRecalled += (sender, e) => {
                    Console.WriteLine($"{e.Message} is recall at {Thread.CurrentThread.ManagedThreadId}");
                };
                client.OnMessageUpdated += (sender, e) => {
                    Console.WriteLine($"{e.Message} is updated at {Thread.CurrentThread.ManagedThreadId}");
                };
                realtime.OnDisconnected += (sender, e) => {
                    Console.WriteLine($"{client.ClientId} is disconnected");
                    try {
                        conv.SendTextAsync("I am disconnected");
                    } catch (Exception err) {
                        Console.WriteLine($"send error: {err.Message}");
                    }
                };
                realtime.OnReconnecting += (sender, e) => {
                    Console.WriteLine($"{client.ClientId} is reconnecting");
                };
                realtime.OnReconnected += (sender, e) => {
                    Console.WriteLine($"{client.ClientId} is reconnected");
                    conv.SendTextAsync("I am reconnected");
                };
                //realtime.CreateClient("aaa").ContinueWith(xxx => {
                //    if (xxx.IsFaulted) {
                //        Console.WriteLine($"create xxx error: {xxx.Exception.Message} at {Thread.CurrentThread.ManagedThreadId}");
                //    } else {
                //        Console.WriteLine($"create xxx at {Thread.CurrentThread.ManagedThreadId}");
                //    }
                //});
                return(client.CreateConversationAsync(members: new string[] { "xxx", "zzz" }));
            }).Unwrap().ContinueWith(t => {
                if (t.IsFaulted)
                {
                    throw t.Exception;
                }
                Console.WriteLine($"create conversation at {Thread.CurrentThread.ManagedThreadId}");
                conv = t.Result;
                return(conv.SendTextAsync("无码种子"));
            }).Unwrap().ContinueWith(t => {
                if (t.IsFaulted)
                {
                    throw t.Exception;
                }
                Console.WriteLine($"send message at {Thread.CurrentThread.ManagedThreadId}");
                Console.WriteLine("send success");
            });


            //await client.CloseAsync();

            //client = await realtime.CreateClientAsync("leancloud");

            //await client.CloseAsync();

            //var newMsg = new AVIMTextMessage("大家好");

            //var timer = new Timer {
            //    Interval = 1000,
            //};
            //timer.Elapsed += async (sender, e) => {
            //    timer.Stop();

            //    try {
            //        var modifiedMsg = await conv.UpdateAsync(msg, newMsg);
            //        Console.WriteLine($"{modifiedMsg.Id} 修改成功");
            //    } catch (Exception exception) {
            //        Console.WriteLine(exception.Message);
            //    }

            //    //try {
            //    //    var recalledMsg = await conv.RecallAsync(msg);
            //    //    Console.WriteLine($"{recalledMsg.Id} is recalled");
            //    //} catch (Exception exception) {
            //    //    Console.WriteLine(exception.Message);
            //    //}
            //};
            //timer.Start();
        }
Example #9
0
 public async void CreateConversation()
 {
     conversation = await client.CreateConversationAsync("Jerry", name : "Tom 和 Jerry 的私聊对话");
 }