gpt4 book ai didi

java - 接收 Smack 的第一条消息时出现问题

转载 作者:行者123 更新时间:2023-12-02 00:48:39 25 4
gpt4 key购买 nike

我使用下面的代码发送消息。

 // Assume we've created an XMPPConnection name "connection".
ChatManager chatmanager = connection.getChatManager();
Chat newChat = chatmanager.createChat("jsmith@jivesoftware.com", new MessageListener() {
public void processMessage(Chat chat, Message message) {
System.out.println("Received message: " + message);
}
});

try {
newChat.sendMessage("Howdy!");
}
catch (XMPPException e) {
System.out.println("Error Delivering block");
}

下面用于异步接收发送到我的 JabberID 的消息。

// Create a packet filter to listen for new messages from a particular
// user. We use an AndFilter to combine two other filters.
PacketFilter filter = new AndFilter(new PacketTypeFilter(Message.class),
new FromContainsFilter("mary@jivesoftware.com"));
// Assume we've created an XMPPConnection name "connection".

// First, register a packet collector using the filter we created.
PacketCollector myCollector = connection.createPacketCollector(filter);
// Normally, you'd do something with the collector, like wait for new packets.

// Next, create a packet listener. We use an anonymous inner class for brevity.
PacketListener myListener = new PacketListener() {
public void processPacket(Packet packet) {
// Do something with the incoming packet here.
}
};
// Register the listener.
connection.addPacketListener(myListener, filter);

发送消息即可。

但是,在我向另一个 JabberID 发送消息之前,无法从该 JabberID 接收消息。

之后我就正确地收到了它发送的消息。

请注意,我经常需要从不在我的列表中的 jabberID 接收消息,而且我的应用程序通常不是开始聊天的一方。

上面的代码是简单的示例,但我的代码完全相同,只是我没有内联创建 PacketListener 实现。

最佳答案

当我在测试程序期间停止使用同一用户登录的 Jabber 客户端时,我的问题得到了解决。换句话说,代码是正确的,但 Jabber 客户端捕获了发送的消息,并且没有任何内容可供我的程序捕获。

关于java - 接收 Smack 的第一条消息时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4133897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com