使用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連接組件實現私聊模型的經驗總結
總結
連接的使用中,首先要注意的就是事件的對應,案例中有通過連接發送消息的動作,那麼就要在連接中添加對應的接收消息的事件,否則通訊就是沒有意義的。還有就是連接中無論發送個人消息還是房間消息都需要唯一標識,所以要設置好案例中數據的字段結構,儘量清晰明瞭。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章