码迷,mamicode.com
首页 > 编程语言 > 详细

java应用之openfire入门篇

时间:2017-09-03 15:39:52      阅读:336      评论:0      收藏:0      [点我收藏+]

标签:set   return   ide   new   bsp   xtend   mct   get   cli   

前言

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

技术分享

 

 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"?><message><body>Your message hello</body></message>"""
    send_broadcast_message(message)

 

smack(api客户端)使用

创建个mavn工程.

pom.xml添加

  
 <dependency>
<groupId>org.igniterealtime.smack</groupId> <artifactId>smack-java7</artifactId> <version>4.1.1</version> <exclusions> <exclusion> <groupId>xpp3</groupId> <artifactId>xpp3</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>xpp3</groupId> <artifactId>xpp3</artifactId> <version>1.1.3.4.O</version> </dependency> <dependency> <groupId>org.igniterealtime.smack</groupId> <artifactId>smack-tcp</artifactId> <version>4.1.1</version> </dependency> <dependency> <groupId>org.igniterealtime.smack</groupId> <artifactId>smack-im</artifactId> <version>4.1.1</version> </dependency> <dependency> <groupId>org.igniterealtime.smack</groupId> <artifactId>smack-extensions</artifactId> <version>4.1.1</version> </dependency>

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

package com.openfire.client;

import java.io.IOException;
import java.util.Scanner;

import org.jivesoftware.smack.AbstractXMPPConnection;
import org.jivesoftware.smack.StanzaListener;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.chat.Chat;
import org.jivesoftware.smack.chat.ChatManager;
import org.jivesoftware.smack.chat.ChatManagerListener;
import org.jivesoftware.smack.chat.ChatMessageListener;
import org.jivesoftware.smack.ConnectionConfiguration.SecurityMode;
import org.jivesoftware.smack.SmackException;
import org.jivesoftware.smack.SmackException.NotConnectedException;
import org.jivesoftware.smack.filter.StanzaFilter;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.Stanza;
import org.jivesoftware.smack.tcp.XMPPTCPConnection;
import org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration;

/**
 * Hello world!
 *
 */
public class App extends Thread 
{
    
    void say() {
        
    };
    
    
    public static void main( String[] args ) throws SmackException, 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 = new XMPPTCPConnection(config);
            
            c.addPacketSendingListener(new StanzaListener() {
                @Override
                public void processPacket(Stanza st) throws NotConnectedException {
                    System.out.println("in StanzaListener:" + st.getFrom());
                }
            }, new StanzaFilter() {
                @Override
                public boolean accept(Stanza st) {
                    System.out.println("in StanzaFilter:" + st.getFrom());
                    return false;
                }
            });

            c.connect();
            c.login();
            
            ChatManager chatManager = ChatManager.getInstanceFor(c);
        
            chatManager.addChatListener(new ChatManagerListener() {
                
                
                @Override
                public void chatCreated(Chat cc, boolean bb) {
                    // 当收到来自对方的消息时触发监听函数
                    cc.addMessageListener(new ChatMessageListener() {
                        @Override
                        public void processMessage(Chat cc, Message mm) {
                            System.out.println("app2收到消息:" + cc + mm.getBody());
                        }
                    });
                }
            });
        
            
            
            
            while (true) {
                sleep(2000);
//每2秒给new1用户发消息 Chat chat
= chatManager.createChat("new1"); chat.getThreadID(); Message msg = new Message(); msg.setBody("kkkkkkkkkkkkkkkkkkkkk33333333333333333333333333333333333"); chat.sendMessage(msg); } } }

 

 

 

总结:

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

 

 

 

 

  

java应用之openfire入门篇

标签:set   return   ide   new   bsp   xtend   mct   get   cli   

原文地址:http://www.cnblogs.com/whf191/p/7469545.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!