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()); } }
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); }); }); }
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(); }
private async void btn_create_Click(object sender, EventArgs e) { //var isTransient = ckb_isTransient.Checked; conversation = await client.CreateConversationAsync(txb_friend.Text.Trim()); }
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(); }
public async void CreateConversation() { conversation = await client.CreateConversationAsync("Jerry", name : "Tom 和 Jerry 的私聊对话"); }