【发布时间】:2016-09-30 23:21:51
【问题描述】:
我尝试使用 xmpp 和 OpenFire 在两个用户之间建立聊天连接。但我无法发送和接收消息。我在下面粘贴了我的代码以供参考。任何帮助都会非常有帮助。
我通过
与 Smack 建立了联系XMPPTCPConnectionConfiguration.Builder config = XMPPTCPConnectionConfiguration.builder();
config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
config.setUsernameAndPassword("admin", "admin");
config.setServiceName("172.21.4.199");
config.setHost("172.21.4.199");
config.setPort(5222);
config.setDebuggerEnabled(true);
config.setConnectTimeout(50000);
XMPPTCPConnection connection = new XMPPTCPConnection(config.build());
XMPPTCPConnection.setUseStreamManagementResumptiodDefault(true);
XMPPTCPConnection.setUseStreamManagementDefault(true);
try {
connection.setPacketReplyTimeout(50000);
connection.connect();
Log.d(TAG, "SetupDefaults -- Connected");
} catch (Exception e) {
e.printStackTrace();
Log.d(TAG, "SetupDefaults -- Connection failed exc: "+e);
}
and its gets succesfully connected. And i try to send a chat by using
ChatManager chatManager = ChatManager.getInstanceFor(connection);
Chat chat = chatManager.createChat("user2@server.local", new ChatMessageListener() {
@Override
public void processMessage(Chat chat, Message message) {
System.out.println("processMessage -- Sent message: " + message);
}
});
try {
chat.sendMessage("Hai.. Lets we chat!");
}catch (Exception e){
Log.d(TAG, "sendChat Exc: "+e.toString());
}
但我找不到 processMessage 被触发。因为该 S.O.P 不会被触发。但我得到了
SMACK: SENT (0): Hai.. 让我们聊天吧!
SMACK: RECV (0): Hai.. 让我们聊天吧!
发送聊天时在我的控制台中。
我也用过,
PacketListener packetListener = new PacketListener() {
@Override
public void processPacket(Stanza packet) throws SmackException.NotConnectedException {
Message message = (Message)packet;
String from = message.getFrom();
String body = message.getBody();
System.out.println("Message from: " + from + " " + body);
}
};
connection.addPacketListener(packetListener, filter);
接收聊天。但是 processPacket 也不会被触发。
【问题讨论】: