java xmpp openfire_java应用之openfire入门篇

前言

openfire是一个聊天服务端,好比qq服务端.本质是个socker server.

openfire通讯协议是 xmpp  ,什么是xmpp参考百科 https://baike.baidu.com/item/XMPP/3430617?fr=aladdin

openfire项目三部分

1.服务端   --->  2.桌面版客户端spark  ---> 3.smack(api客户端)

1.服务端结构

a.plugins(插件):

1.官方提供的插件

2.自己开发插件

功能概述:比如注册用户。

b.web版的管理端

2.桌面版客户端spark

a.类似QQ客户端,还没用

3.smack(api客户端)

a.api库,程序员都懂.

安装篇

下载 openfire-4.1.5-1.noarch.rpm,jdk环境1.8

#安装

rpm -ivh openfire-4.1.5-1.noarch.rpm

#启动

systemctl restart openfire

#浏览器打开

http://ip:9090

官方rest api插件使用

#安装rest api

a56dbe67099bcad817ff487d327cbacd.png

REST API插件可以后台添加用户等等,详细查看文档

python调用例子:

#coding=utf-8

import requests

import json

tou1 = {"Authorization": "pymxG12RQQDj2vFY","Accept": "application/json"}

tou2 = {"Authorization": "pymxG12RQQDj2vFY","Content-Type": "application/json"}

tou3 = {"Authorization": "pymxG12RQQDj2vFY","Content-Type": "application/xml"}

def serach_user(user):

url = "http://192.168.0.110:9090/plugins/restapi/v1/users?search={user}".format(user=user)

r1 = requests.get(url,headers=tou1)

print r1.text

def create_user(user):

url = "http://192.168.0.110:9090/plugins/restapi/v1/users"

r1 = requests.post(url, headers=tou2,data=user)

print r1.text

print r1.status_code

def send_broadcast_message(message):

url = "http://192.168.0.110:9090/plugins/restapi/v1/messages/users"

r1 = requests.post(url, headers=tou3,data=message)

print r1.status_code

if __name__ == '__main__':

# c_user1 ={"username": "new1", "password": "p4ssword"}

# c_user1 = json.dumps(c_user1)

# create_user(c_user1)

message = """<?xml version="1.0" encoding="UTF-8" standalone="yes"?>Your message hello"""

send_broadcast_message(message)

smack(api客户端)使用

创建个mavn工程.

pom.xml添加

org.igniterealtime.smack

smack-java7

4.1.1

xpp3

xpp3

xpp3

xpp3

1.1.3.4.O

org.igniterealtime.smack

smack-tcp

4.1.1

org.igniterealtime.smack

smack-im

4.1.1

org.igniterealtime.smack

smack-extensions

4.1.1

java客户端发送获取消息例子

packagecom.openfire.client;importjava.io.IOException;importjava.util.Scanner;importorg.jivesoftware.smack.AbstractXMPPConnection;importorg.jivesoftware.smack.StanzaListener;importorg.jivesoftware.smack.XMPPException;importorg.jivesoftware.smack.chat.Chat;importorg.jivesoftware.smack.chat.ChatManager;importorg.jivesoftware.smack.chat.ChatManagerListener;importorg.jivesoftware.smack.chat.ChatMessageListener;importorg.jivesoftware.smack.ConnectionConfiguration.SecurityMode;importorg.jivesoftware.smack.SmackException;importorg.jivesoftware.smack.SmackException.NotConnectedException;importorg.jivesoftware.smack.filter.StanzaFilter;importorg.jivesoftware.smack.packet.Message;importorg.jivesoftware.smack.packet.Stanza;importorg.jivesoftware.smack.tcp.XMPPTCPConnection;importorg.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration;/*** Hello world!

**/

public class App extendsThread

{voidsay() {

};public static void main( String[] args ) throwsSmackException, IOException, XMPPException, InterruptedException

{//对连接的配置

XMPPTCPConnectionConfiguration.Builder builder =XMPPTCPConnectionConfiguration.builder();

builder.setUsernameAndPassword("admin", "123456");

builder.setServiceName("ww110"); //openfire服务端名字,登录管理后台可查看

builder.setHost("192.168.0.110");

builder.setPort(5222);//不加这行会报错,因为没有证书

builder.setSecurityMode(SecurityMode.disabled);//SASLAuthentication.supportSASLMechanism("PLAIN",0);

builder.setDebuggerEnabled(true);

XMPPTCPConnectionConfiguration config=builder.build();//建立连接并登陆

AbstractXMPPConnection c = newXMPPTCPConnection(config);

c.addPacketSendingListener(newStanzaListener() {

@Overridepublic void processPacket(Stanza st) throwsNotConnectedException {

System.out.println("in StanzaListener:" +st.getFrom());

}

},newStanzaFilter() {

@Overridepublic booleanaccept(Stanza st) {

System.out.println("in StanzaFilter:" +st.getFrom());return false;

}

});

c.connect();

c.login();

ChatManager chatManager=ChatManager.getInstanceFor(c);

chatManager.addChatListener(newChatManagerListener() {

@Overridepublic void chatCreated(Chat cc, booleanbb) {//当收到来自对方的消息时触发监听函数

cc.addMessageListener(newChatMessageListener() {

@Overridepublic voidprocessMessage(Chat cc, Message mm) {

System.out.println("app2收到消息:" + cc +mm.getBody());

}

});

}

});while (true) {

sleep(2000);

//每2秒给new1用户发消息

Chat chat= chatManager.createChat("new1@ww110");

chat.getThreadID(); Message msg= newMessage();

msg.setBody("kkkkkkkkkkkkkkkkkkkkk33333333333333333333333333333333333");

chat.sendMessage(msg); } } }

总结:

openfire只研究到这,暂时写到这。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值