当前位置: 首页 > 工具软件 > SMACK > 使用案例 >

学习 Smack(二)

郑乐池
2023-12-01

<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("jsmith@jivesoftware.com");
newChat.sendMessage("Howdy!");

chat.sendMessage(String messageContent)可以方便的创建一个Message对象,用字符串设置消息的内容,在一定的情况下,你可能希望在消息的发送前设置额外的值使用Chat.CreateMessage 与mChat.sendMessage,如下面代码片段展示

// 假设我们已经创建了一个名为"connection"的XMPPConnection。
Chat newChat = connection.createChat("jsmith@jivesoftware.com");
Message newMessage = newChat.createMessage();
newMessage.setBody("Howdy!");
message.setProperty("favoriteColor", "red");
newChat.sendMessage(newMessage);

Chat对象可以让您容易的监听到其他聊天参与者的回复,下面这段代码用来展示鹦鹉学舌,他将回复对方输入的一切消息

// 假设我们已经创建了一个名为"connection"的XMPPConnection。
Chat newChat = connection.createChat("jsmith@jivesoftware.com");
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("test@jivesoftware.com");
// 用昵称"jsmith"加入这处群。
newGroupChat.join("jsmith");
// 向聊天室中的其它人发送一条消息。
newGroupChat.sendMessage("Howdy!");

通常,在群中发送和接收消息和在 Chat 类中非常相似。同时还提供了用于得到聊天室中其它人的列表的方法。



 类似资料: