Chinaunix首页 | 论坛 | 博客
  • 博客访问: 622443
  • 博文数量: 79
  • 博客积分: 848
  • 博客等级: 军士长
  • 技术积分: 1800
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-26 19:30
文章分类

全部博文(79)

文章存档

2015年(4)

2013年(39)

2012年(36)

分类: Android平台

2013-08-14 17:27:11

上一节说了挺多的废话,俗话说的好:“光说不练假把式!”,我们这里就来动手实现一个基于XMPP协议和Android客户端的简单应用,为什么说这是一个简单应用,因为本人在做这个应用之前对于Android可以说是一窍不通,所以里面涉及到的程序都是非常的基础和简陋的,还希望大家能够见谅!

开发的第一步,我们来架设一个opnfire的服务器,关于这一步其实网上有很多,我这里提供我的一个步骤:
基本的条件:
操作系统:ubuntu12.04LTS X86 32
数据库:mysql
JDK
1、安装mysql

sudo apt-get install mysql-server

在安装的过程中系统会要求你设置mysql的密码,为了简单起见我们就设置成了“123456”.

2、创建openfire数据库

mysql -u root -p

CREATE DATABASE openfire;(注意这里有分号的哦!!!

quit;

3、安装JDK,这一步省略,因为大部分的操作系统都已经预装了jdk。

4、安装opnfire

首先:从openfire的官方网站下载适合自己操作系统的版本: 对于ubuntu就可以选择Debian的版本就可以了!

然后:sudo dpkg -i openfire_3.7.1_all.deb

最后:打开你的浏览器:输入
进行初始化安装,在数据库选择的时候,选择外部的数据库,并键入:
jdbc:mysql://localhost:3306/openfire?useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8

安装完成了!

现在服务器准备就绪了,我们来写一个小的java程序测试一下服务器是否能够,正常工作,首先我们打开:localhost:9090,登录到openfire服务器之上,我们在上面创建两个用户
用户:user1
密码:passw0rd

用户:user2
密码:passw0rd

password的o用0代替了!

创建完了用户,我们就来说用来进行开发的开源的库,原生的java库是,安卓的话需要用到asmack,当然原生的smack安卓也是支持的,但是当我们调用原生的库创建聊天室的时候会出现错误,所以如果你用安卓来开发还是建议你使用,现在asmack放在了github上管理,大家可以积极贡献开源社区哦!

我在实现的时候参考了smack的官方文档:其实这份官方文档已经非常的完备了,只是涉及到了具体的平台会出一些小的问题:
首先我们来创建一个java的工程,然后将smack的jar文件导入到java的工程之中,实现一个连接服务器的函数:

点击(此处)折叠或打开

  1. public class TestConnect{
  2.         public void connect(){
  3.             ConnectionConfiguration config = new ConnectionConfiguration("10.101.158.103",5222);
  4.      config.setSelfSignedCertificateEnabled(true);
  5.      config.setSASLAuthenticationEnabled(false);
  6.      config.setDebuggerEnabled(false);
  7.      config.setSecurityMode(ConnectionConfiguration.SecurityMode.required);
  8.      XMPPConnection connection = new XMPPConnection(config);
  9.      try{
  10.      connection.connect();
  11.      Presence presence = new Presence(Presence.Type.available);
  12.      presence.setStatus("Q我吧");
  13.      connection.sendPacket(presence);
  14.      Thread.currentThread().sleep(100000);
  15.      }catch(Exception e){
  16.      e.printStackTrace();
  17.      }
  18.         }
  19.      public static void main(String[] args)throws XMPPException{
  20.      TestConnect tConnect=new TestConnect();
  21.      tConnect.connect();
  22.      }

  23.     }
一定要注意这里的ConnectionConfiguration("10.101.158.103",5222),这个IP地址是你本机的IP地址,不要写localhost或者127.0.0.1,不然会出现问题,默认的端口是:5222
假如执行了程序没有错误,当你登录到openfire服务器的时候会发现user2显示在线的状态了!!!


OK!!这样我们就搭建完成了自己的openfire服务器并且使用smack库连接成功了,下一节开始我们用android开发聊天室!

阅读(10602) | 评论(2) | 转发(1) |
给主人留下些什么吧!~~

echosilly2014-03-24 15:55:15

$(document).bind('connect', function (ev, data) {
 //ev 是时间对象 ,data就是调用connect方法传的值。
 var conn = new Strophe.Connection("http://127.0.0.1:7070/http-bind/");
 //var conn = new Strophe.Connection("/http-bind/");
 
    conn.connect(data.jid, data.password, function (status) {
     alert("status1: "+status);
        if (status 

echosilly2014-03-24 15:54:42

你好,想请教你一个问题:
我最近刚刚学习xmpp,用openfire作为服务器,web 客户端使用 strophe.js 就行开发。
刚刚写了一个 ping server的小程序,总是返回 1,也就是:Strophe.Status.Connecting 
之后就没有下文了,请你看看这是什么原因。谢谢。

我的openfire的domainName为:127.0.0.1
var conn = new Strophe.Connection("http://127.0.0.1:7070/http-bind/");

js中的主要代码:
$(document).ready(function () {
    $('#login_dialog').dialog({
        autoOpen: true,
       &n