android 使用xmpp smack openfire实现即时通讯(一)
16lz
2021-01-26
介绍:
XMPP :XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测。
smack:是一个开源包,易于使用的XMPP(jabber)客户端类库
openfire :作为服务器提供服务。
openfire 安装:
服务下载地址:http://www.igniterealtime.org/projects/openfire/
安装配置过程https://mp.csdn.net/postedit/84329302
Spark
下载地址:https://spark.en.softonic.com/
spark是一个即时通信客户端可使用spark,可以用来测试openfire安装是否有效,如果有信心,可以不用测试。
如果安装后登陆不上,可以参考:https://blog.csdn.net/oniejianjun/article/details/72673782。
有了服务器后我们就可以编写安卓客户端来连接这个服务器登陆了
1、在gradle中配置smack所需要的包。
compile 'org.igniterealtime.smack:smack-android:4.1.4'compile 'org.igniterealtime.smack:smack-tcp:4.1.4'compile 'org.igniterealtime.smack:smack-im:4.1.4'compile 'org.igniterealtime.smack:smack-extensions:4.1.4'
2、测试连接类MyXMPPTCPConnection
public class MyXMPPTCPConnection extends XMPPTCPConnection { private static MyXMPPTCPConnection connection; private MyXMPPTCPConnection(XMPPTCPConnectionConfiguration config) { super(config); } public static synchronized MyXMPPTCPConnection getInstance() { //初始化XMPPTCPConnection相关配置 if (connection == null) { XMPPTCPConnectionConfiguration.Builder builder = XMPPTCPConnectionConfiguration.builder(); //设置连接超时的最大时间 builder.setConnectTimeout(10000); //设置登录openfire的用户名和密码 builder.setUsernameAndPassword("admin", "admin"); //设置安全模式 builder.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled); builder.setResource("Android"); //设置服务器名称 builder.setServiceName("127.0.0.1"); //设置主机地址 builder.setHost("192.168.10.104"); //设置端口号 builder.setPort(5222); //是否查看debug日志 builder.setDebuggerEnabled(true); connection = new MyXMPPTCPConnection(builder.build()); } return connection; }}
其中:builder.setHost("192.168.10.104");是本机的ip,你可以在cmd命令中输入ipconfig查询自己的ip。还有一点需要注意的是,我用的本地电脑配的openfire服务器。之前我用真机测试一直报错,连接超时,因为不在一个局域网,用模拟器测试就没有问题。
2、主函数测试连接:
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); new Thread(new Runnable() { @Override public void run() { MyXMPPTCPConnection connection = MyXMPPTCPConnection.getInstance(); try { connection.connect(); Log.i("test==", "connect"); connection.login(); Log.i("test==", "login"); } catch (Exception e) { } }).start(); }}
注意:1、主线程直接访问,会报错,需要新启动一个线程。2、记得为app申请网络权限
如何判断登录成能,在openfire服务器的管理界面:http://127.0.0.1:9090/user-summary.jsp
中看到自己的头像绿了(感觉那里不对),处于登录状态
更多相关文章
- tcping测试服务器TCP端口
- Android自动测试之monkeyrunner工具(二)
- android osmdroid 实现谷歌地图之定位 替换为其他
- (jenkins)hudson平台搭建android项目持续化集成以及基于NativeDriv
- Android(安卓)5.0学习之定义阴影
- Activity伪造Dialog的时候不能全屏显示
- android自动化测试工具之DroidPilot
- Mars服务器和客户端demo运行教程
- Android中TextView文字设置不同的颜色