Example #1
0
        public static async Task Main(string[] args)
        {
            string appId    = "uay57kigwe0b6f5n0e1d4z4xhydsml3dor24bzwvzr57wdap";
            string appKey   = "kfgz7jjfsk55r5a8a3y4ttd3je1ko11bkibcikonk32oozww";
            string clientId = "wujun";

            AVClient.Initialize(appId, appKey);
            AVRealtime realtime = new AVRealtime(appId, appKey);

            AVRealtime.WebSocketLog(Console.WriteLine);


            AVIMClient tom = await realtime.CreateClientAsync(clientId, tag : "Mobile", deviceId : "xxxbbbxxx");

            tom.OnSessionClosed += Tom_OnSessionClosed;
            var conversation = await tom.GetConversationAsync("5b83a01a5b90c830ff80aea4");

            var messages = await conversation.QueryMessageAsync(limit : 10);

            var afterMessages = await conversation.QueryMessageAfterAsync(messages.First());

            var earliestMessages = await conversation.QueryMessageFromOldToNewAsync();

            var nextPageMessages = await conversation.QueryMessageAfterAsync(earliestMessages.Last());

            var earliestMessage = await conversation.QueryMessageFromOldToNewAsync(limit : 1);

            var latestMessage = await conversation.QueryMessageAsync(limit : 1);

            var messagesInInterval = await conversation.QueryMessageInIntervalAsync(earliestMessage.FirstOrDefault(), latestMessage.FirstOrDefault());

            Console.ReadKey();
        }
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());
            }
        }
Example #3
0
        private async void btn_join_Click(object sender, EventArgs e)
        {
            var convId = this.txb_convId.Text.Trim();

            this.conversation = await client.GetConversationAsync(convId, true);

            await client.JoinAsync(this.conversation);
        }
Example #4
0
        private async void btn_join_Click(object sender, EventArgs e)
        {
            var convId = this.txb_convId.Text.Trim();

            this.conversation = await client.GetConversationAsync(convId, true);

            await client.JoinAsync(this.conversation);

            //AVIMClient avIMClient = await realtime.CreateClientAsync("junwu");
            //avIMClient.OnMessageReceived += Client_OnMessageReceived;
            //AVIMConversation avIMConversation = await avIMClient.GetConversationAsync("5940e71b8fd9c5cf89fb91b7", true);
            //if (avIMConversation != null)
            //{
            //    await avIMConversation.JoinAsync();
            //}
        }
        public async Task OnExecuteAsync(CommandLineApplication app, IConsole console)
        {
            AVClient.Initialize(AppId, AppKey);
            AVRealtime.WebSocketLog((str) =>
            {
                console.WriteLine(str);
            });

            AVRealtime realtime = new AVRealtime(AppId, AppKey);

            AVIMClient client = await realtime.CreateClientAsync(ClientId);

            var conversation = await client.GetConversationAsync("5b83a01a5b90c830ff80aea4");

            await conversation.SendImageAsync("http://ww3.sinaimg.cn/bmiddle/596b0666gw1ed70eavm5tg20bq06m7wi.gif", "Satomi_Ishihara", "萌妹子一枚", new Dictionary <string, object>
            {
                { "actress", "石原里美" }
            });

            new RealtimeCommand().OnExecute(app, console);
        }
Example #6
0
 //添加好友事件监听(好友邀请事件:同意,拒绝,好友邀请反馈事件:同意)
 private void OnInvited(object sender, AVIMOnInvitedEventArgs e)
 {
     //排除自身引发的事件
     if (e.InvitedBy != AVUser.CurrentUser.ObjectId)
     {
         App.Current.Dispatcher.Invoke((Action)(async() =>
         {
             AVIMConversation InvitedConversation = await User.GetConversationAsync(e.ConversationId);
             AVUser InvitedUser = await AVUser.Query.GetAsync(e.InvitedBy);
             //好友邀请事件
             if (InvitedConversation.IsUnique)
             {
                 //同意
                 if (MessageBox.Show(InvitedUser.Username + "请求添加您为好友,是否通过?", "添加好友请求", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
                 {
                     //将对方加入自己的FriendsConversation
                     await User.InviteAsync(FriendsConversation, e.InvitedBy);
                     //重新获取FriendsConversation==》不必要
                     FriendsConversation = await User.GetConversationAsync(AVUser.CurrentUser.Get <string>("Friends"));
                     //重新绑定listbox数据
                     BindingFriendListSrouce(e.InvitedBy);
                 }
                 //拒绝
                 else
                 {
                     //拒绝即为删除邀请者创建的Conversation
                     try
                     {
                         List <string> members = new List <string>();
                         members.Add(AVUser.CurrentUser.ObjectId);
                         members.Add(InvitedUser.ObjectId);
                         await(await AVObject.GetQuery("_Conversation").WhereEqualTo("m", members).FirstAsync()).DeleteAsync();
                     }
                     catch
                     {
                         try
                         {
                             List <string> members = new List <string>();
                             members.Add(InvitedUser.ObjectId);
                             members.Add(AVUser.CurrentUser.ObjectId);
                             await(await AVObject.GetQuery("_Conversation").WhereEqualTo("m", members).FirstAsync()).DeleteAsync();
                         }
                         catch
                         {
                             MessageBox.Show("给舔狗一条活路吧");
                         }
                     }
                     finally
                     {
                         new Tip("提醒", "已拒绝 " + InvitedUser.Username + "的好友邀请", 3);
                     }
                 }
             }
             //好友邀请反馈事件:同意
             if (!InvitedConversation.IsUnique)
             {
                 //将对方加入自己的FriendsConversation
                 if (!FriendsConversation.MemberIds.Contains(e.InvitedBy))
                 {
                     new Tip("提醒", "已成功添加 " + InvitedUser.Username);
                     await User.InviteAsync(FriendsConversation, e.InvitedBy);
                     //重新获取FriendsConversation==》不必要
                     FriendsConversation = await User.GetConversationAsync(AVUser.CurrentUser.Get <string>("Friends"));
                     //重新绑定listbox数据
                     BindingFriendListSrouce(e.InvitedBy);
                 }
             }
         }));
     }
 }