您的位置:首页 > 其它

基于tigase服务器的安卓客户端开发---创建聊天

2016-04-04 16:48 405 查看
注册登录完成了,接下来咱们就要进入聊天功能的研发了,是不是很激动?
    使用jaxmpp创建聊天与注册登陆一样简单

        第一步,创建聊天对象,打开聊天通道

  
private void creatChat() {
try {
UrlConstant.jaxmpp.createChat(JID.jidInstance(toaccount));
L.e("asker", "创建聊天对象:" + toaccount);
} catch (JaxmppException e) {
e.printStackTrace();
Log.e("asker", "创建聊天的异常:" + e.getMessage());
}


            嗯,就是一句话

            遇到的问题:上篇文章已经说过,用户名必须拼接"@"+服务器名! 所以,这里的toaccount同样需要拼接

                这一点至关重要,如果聊天通道出错,那么,后面的激情聊天化为泡影,又想起了当时苦逼的周末,悲哀,略去一万字....

        言归正传,消息通道已经建立好了,双方都已经是服务器的用户了,那么我们要他们建立联络,想想openFire的实现方式:加好友,发消息;但是,tigase是不需要加好友的,也就是说,我可以随意跟服务器上的注册用户聊天,前提是必须在同一个"@"的服务器里,收发消息的方法也是很简单的,而且是否收发成功,也都融入进来,是的,还是监听:

           
if (UrlConstant.jaxmpp != null) {
//发送消息的监听
UrlConstant.jaxmpp.addListener(SocketConnector.StanzaSending, new Listener<SocketConnector
.ConnectorEvent>() {
@Override
public void handleEvent(SocketConnector.ConnectorEvent connectorEvent) {
try {
L.e("asker", "发送的消息:"
+ connectorEvent.getSessionObject().getUserBareJid()
.getLocalpart() + "<<<<"
+ connectorEvent.getStanza().getAsString() + ">>>>");
} catch (XMLException e) {
e.printStackTrace();
}


          
//接收消息的监听
UrlConstant.jaxmpp.addListener(SocketConnector.StanzaReceived, new Listener<SocketConnector
.ConnectorEvent>() {
@Override
public void handleEvent(SocketConnector.ConnectorEvent connectorEvent) throws JaxmppException {
L.e("asker", "接收到的消息:"
+ connectorEvent.getSessionObject().getUserBareJid()
.getLocalpart() + "<<<<"
+ connectorEvent.getStanza().getAsString() + ">>>>");
L.e("asker", "toaccount::" + toaccount + ";;" + connectorEvent.getStanza().getAttribute("from")
.split("@")[0]);


        好了,消息可以正常收发了,会有同学发现,第一次成功收发,第二次偶尔成功,接着也许就收发不到了,为什么?这也许是tigase的设计机制,针对这个问题,不要着急,一句话,对,还是一句话就可以解决

try {
UrlConstant.jaxmpp.keepalive();
} catch (JaxmppException e) {
e.printStackTrace();
}


           
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: