學習 Smack(二)

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">使用Chat GroupChat發送消息</span>

往復的發送消息處於通信的核心地位,兩個類輔助發送消息與接收消息

  • org.jivesoftware.smack.Chat --用於在兩個人之間發送消息。
  • org.jivesoftware.smack.GroupChat --用於加入聊天室在多個人之間發送消息。
Chat與GroupChat都是使用Message Packet來發送消息,在某種特定的情況下您可能不願意使用較高級的Chat與GroupChat類而直接發送消息和監聽消息

Chat

一個Chat在兩個用戶之間建立一個消息線程(通過線程ID),下面這段代碼用來展示創建一個新的Chat與發送一個條固定內容的消息

// 假設我們已經創建了一個名爲"connection"的XMPPConnection。
Chat newChat = connection.createChat("[email protected]");
newChat.sendMessage("Howdy!");

chat.sendMessage(String messageContent)可以方便的創建一個Message對象,用字符串設置消息的內容,在一定的情況下,你可能希望在消息的發送前設置額外的值使用Chat.CreateMessage 與mChat.sendMessage,如下面代碼片段展示

// 假設我們已經創建了一個名爲"connection"的XMPPConnection。
Chat newChat = connection.createChat("[email protected]");
Message newMessage = newChat.createMessage();
newMessage.setBody("Howdy!");
message.setProperty("favoriteColor", "red");
newChat.sendMessage(newMessage);

Chat對象可以讓您容易的監聽到其他聊天參與者的回覆,下面這段代碼用來展示鸚鵡學舌,他將回復對方輸入的一切消息

// 假設我們已經創建了一個名爲"connection"的XMPPConnection。
Chat newChat = connection.createChat("[email protected]");
newMessage.setBody("Hi, I'm an annoying parrot-bot! Type something back to me.");
while (true) {
    // 等待用戶發送給我們的下一條消息。
    Message message = newChat.nextMessage();
    // 將對方發送過來的消息原樣發送給他。
    newChat.sendMessage(message.getBody());
}
以上方法通過chat.nextMessage得到下一條消息,他將等待不知道何時到來的另一條消息,當然還有其他的方法能夠等待特定時間到來的新消息,或者您可以添加消息監聽器,他將每次消息到來的時候,通知你

GroupChat

通過GroupChat將消息內容上傳到服務器的聊天室,您可以在一羣人中發送羣組消息,但是你在接收消息之前,必須在聊天室裏面有一個暱稱,下面這段代碼展示連接到聊天室並且發送消息

// 假設我們已經創建了一個名爲"connection"的XMPPConnection。
GroupChat newGroupChat = connection.createGroupChat("[email protected]");
// 用暱稱"jsmith"加入這處羣。
newGroupChat.join("jsmith");
// 向聊天室中的其它人發送一條消息。
newGroupChat.sendMessage("Howdy!");

通常,在羣中發送和接收消息和在Chat類中非常相似。同時還提供了用於得到聊天室中其它人的列表的方法。



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