使用ivx鏈接組件實現私聊模型的經驗總結

在一些案例中咱們須要實現應用之間的數據即時共享,好比聊天室或者須要互動的多人遊戲等。在ivx中咱們是經過鏈接組件實現這種多個設備之間的信息傳遞功能的,今天結合一個私聊模型來說一講鏈接組件的具體使用方法。數組

一.鏈接
首先簡單介紹一下鏈接組件,咱們在對象樹裏選中前臺便可添加一個鏈接,能夠看到它只有一個屬性就是它的SID碼,這也是它的惟一標識。
使用ivx鏈接組件實現私聊模型的經驗總結
使用ivx鏈接組件實現私聊模型的經驗總結
1.用戶
登陸鏈接的每一個用戶能夠設置本身的用戶ID、暱稱和頭像,登陸成功後會收到一個CID碼做爲該用戶的惟一標識。同時,鏈接組件也能夠監聽到用戶的加入和離開並返回實時結果。
使用ivx鏈接組件實現私聊模型的經驗總結
2.房間
用戶能夠建立房間,可是須要填寫房間ID,並且此ID會做爲房間的惟一標識,在加入、退出、關閉房間和發送房間消息時都須要指明房間ID。
使用ivx鏈接組件實現私聊模型的經驗總結
3.發送和接收消息
用戶能夠發送我的、房間和全局三種消息,發送我的消息時必須指明接收用戶的CID碼,而發送房間/全局消息會發送給當前房間/鏈接內的每一位用戶(包括髮送者本身)。此外,鏈接中能夠一次發送多條消息,每條消息用不一樣的消息名稱加以區分。
使用ivx鏈接組件實現私聊模型的經驗總結
在接收消息時能夠獲得參數「消息內容」,它是包含整條消息的集合,咱們能夠在後面添加上發送消息時填入的名稱做爲後綴選取其中的某一條,此外咱們還能夠獲取發送者的CID、用戶ID、暱稱和頭像。
使用ivx鏈接組件實現私聊模型的經驗總結
使用ivx鏈接組件實現私聊模型的經驗總結
二.私聊模型
1.數據
在這個模型中共有五個參數,通用變量「個人信息」和「選中好友」分別用於存放當前用戶和正在對話的好友的CID、暱稱和頭像;對象數組「好友列表」則用來存放所有好友信息,並且加了一個字段「紅點」用來判斷是否有未讀消息,而對象數組「當前消息列表」和「總消息列表」則分別存放正在對話的好友消息記錄和全部好友的消息記錄,能夠看到它倆的結構是一致的,其中布爾值字段「個人消息」爲1說明這條消息是當前用戶發給對方的,反之說明是由對方發送的。
使用ivx鏈接組件實現私聊模型的經驗總結
使用ivx鏈接組件實現私聊模型的經驗總結
2.前臺
在前臺初始化時咱們會獲取當前在線用戶列表並賦值給「好友列表」,下圖中能夠看到調試記錄裏的打印結果,序號爲0的元素裏面就是以前已經登陸的一個用戶的信息,序號爲1的元素其實就是當前用戶,不過因爲當前用戶還沒完成登記,因此暫時只分配了一個CID。(即鏈接獲取在線用戶列表時會獲取用戶本身和沒有進行登記的用戶)
使用ivx鏈接組件實現私聊模型的經驗總結
使用ivx鏈接組件實現私聊模型的經驗總結
3.登記頁面
登記頁面中咱們能夠上傳頭像、輸入暱稱,點擊chat按鈕就會在鏈接中進行登記,登記成功後會把當前用戶的CID、頭像和暱稱保存在「個人信息」中,而後使用鏈接組件發送一條全局消息,包含「類型」,「暱稱」和「頭像」三部份內容。對應要給鏈接添加收全局消息的事件,而且當接收到的全局消息的「類型」值爲「新用戶」時,在「好友列表」中添加一條數據,包括直接獲取的發送者CID和「消息內容」中的「頭像」與「暱稱」。
使用ivx鏈接組件實現私聊模型的經驗總結
使用ivx鏈接組件實現私聊模型的經驗總結
4.聊天頁面
聊天頁面能夠分爲四部分:左側放置的是當前用戶的頭像,圖片組件已經與「個人信息」進行了數據綁定;中間是聯繫人列表;右上方是正在對話好友的消息列表;右下方則用來輸入併發送消息。
使用ivx鏈接組件實現私聊模型的經驗總結
使用ivx鏈接組件實現私聊模型的經驗總結
其中聯繫人列表是依據「好友列表」循環建立的,for容器下添加了兩個if容器用來分別將當前用戶本身和沒有暱稱的用戶篩除,當用戶點擊選中一個好友時會將該好友的信息存到「選中好友」中,而且從「總消息列表」中將與該好友的對話記錄篩選輸出到「當前消息列表」。
使用ivx鏈接組件實現私聊模型的經驗總結
使用ivx鏈接組件實現私聊模型的經驗總結
聯繫人列表中還用絕對定位容器作了一個紅點的展現效果,它的可見屬性進行了數據綁定,只有在當前數據的「紅點」爲1時可見,這部分的邏輯是當鏈接收到一條我的消息會先將該消息存入「總消息列表」,而後判斷消息來源的CID是否爲正在對話的「選中好友」,若是是就將該消息再添加到「當前消息列表」;若是不是就從「好友列表」中找到該CID對應的好友,把「紅點」字段置1,使該好友在列表中顯示紅點,標記有消息未讀。
使用ivx鏈接組件實現私聊模型的經驗總結
使用ivx鏈接組件實現私聊模型的經驗總結
前面已經說過選中一個好友後會從「總消息列表」中將與該好友的對話記錄篩選輸出到「當前消息列表」,右上方就是根據「當前消息列表」循環建立展現出聊天記錄的,並且這裏if容器會經過每條消息中字段「個人消息」的值選擇不一樣的展現效果。
使用ivx鏈接組件實現私聊模型的經驗總結
最後是點擊右下方的send按鈕,這裏鏈接會經過「選中好友」中的CID確認發送對象,將輸入內容發送給對方後,咱們須要在「總消息列表」和「當前消息列表」中都添加這條消息的記錄,並且將「個人消息」這一字段設置爲1。
使用ivx鏈接組件實現私聊模型的經驗總結
總結
鏈接的使用中,首先要注意的就是事件的對應,案例中有經過鏈接發送消息的動做,那麼就要在鏈接中添加對應的接收消息的事件,不然通信就是沒有意義的。還有就是鏈接中不管發送我的消息仍是房間消息都須要惟一標識,因此要設置好案例中數據的字段結構,儘可能清晰明瞭。併發

相關文章
相關標籤/搜索