異常:
openfire服務端配置域名為127.0.0.1 服務名 127.0.0.1 即openfire安裝在本機電腦,用戶端通路本地伺服器。
電腦上的spark配置域名為127.0.0.1,可以正常登入
用自己寫的app用戶端連接配接時配置的伺服器IP也為127.0.0.1,登入後出現如下異常
org.jivesoftware.smack.SmackException$ConnectionException: The following addresses failed: ‘127.0.0.1:5222’ failed because: /127.0.0.1 exception: java.net.ConnectException: Connection refused
at org.jivesoftware.smack.tcp.XMPPTCPConnection.connectUsingConfiguration(XMPPTCPConnection.java:619)
at org.jivesoftware.smack.tcp.XMPPTCPConnection.connectInternal(XMPPTCPConnection.java:902)
at org.jivesoftware.smack.AbstractXMPPConnection.connect(AbstractXMPPConnection.java:380)
03-25 06:03:40.376 10956-11115/com.wqx.dowa W/System.err: at com.wqx.dowa.smack.SmackImpl.login(SmackImpl.java:287)
解決:cmd指令,ipconfig,檢視本機ip,app用戶端連接配接的ip換為本機ip,不再使用127.0.0.1。openfire配置不變,正常登入
不建議這麼做,最好openfie服務端配置的域名,伺服器位址和用戶端保持一緻。
發送消息:
app使用smark4.2的時候,遠端服務端(阿裡雲主機)openfire使用4.1.5,群聊(新加的功能)怎麼都收不到消息,也發不出去,一直找不到問題所在。
最後先在本地試試的心态(懷疑是伺服器openfire版本的問題,畢竟4.2版本改動了很多),在本地安裝openfire4.2.3,登入成功後,群聊收發消息正常。确定是服務端openfire版本低的問題。
注意:4.2後發消息時:
單聊/群聊 這樣寫
Message newMessage;
newMessage = new Message(JidCreate.from(toJID));
newMessage.setBody(messageBody);
mXMPPConnection.sendStanza(newMessage);
單聊時,對方可以收到消息,提示是廣播的消息。
群聊時,群成員收不到消息
正确寫法:
單聊:
Message newMessage;
newMessage = new Message(JidCreate.from(toJID),Message.Type.chat);
newMessage.setBody(messageBody);
mXMPPConnection.sendStanza(newMessage);
群聊:
Message newMessage;
newMessage = new Message(JidCreate.from(toJID),Message.Type.groupchat);
newMessage.setBody(messageBody);
mXMPPConnection.sendStanza(newMessage);
阿裡雲上安裝openfire:
xftp工具下載下傳 https://download.csdn.net/download/qq_35841826/10131415
xshell 工具
openfire4.2.3
rpm 在ubuntu下安裝 方法 https://blog.csdn.net/suleil1/article/details/49471723
方法:
1.CODE:
sudo apt-get install rpm alien
2.CODE:
alien -d package.rpm
3.CODE:
sudo dpkg -i package.deb
XMPPError: bad-request - modify error create new user using smack and openfire
解決方法:
設定适當的服務名稱 不要使用原始的()
登入openfire管理界面後會顯示伺服器名稱 把那個名稱設定上去就行了 下面是我的代碼
XMPPTCPConnectionConfiguration xmpp = XMPPTCPConnectionConfiguration.builder()
//伺服器IP位址
.setHost("192.168.1.155")
//伺服器端口
.setPort()
//伺服器名稱(管理界面的 主機名)
// .setServiceName("127.0.0.1") 不設定預設的位址
.setServiceName("user-20150810nb")
//是否開啟安全模式
.setSecurityMode(XMPPTCPConnectionConfiguration.SecurityMode.disabled)
//是否開啟壓縮
.setCompressionEnabled(false)
.setSendPresence(false)
//開啟調試模式
.setDebuggerEnabled(true)
.setUsernameAndPassword("admin", "admin")
.build();
https://blog.csdn.net/u011481547/article/details/72842738