一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Openfire開發(fā)廣播服務(wù)接口,支持離線廣播消息

 WindySky 2017-10-26 發(fā)布于廣東

概要

最近公司要求做一個(gè)web端向所有移動端發(fā)送公告,所以考慮到即時(shí)性就用openfire做服務(wù)。不過為了減輕web端的工作量,我們開發(fā)一個(gè)簡單的插件給openfire,對外開放http接口即可。

準(zhǔn)備

系統(tǒng)環(huán)境:window10(surface pro4)

JDK:1.7 or later

開發(fā)工具:eclipse-Mars.2 Release (4.5.2)

Openfire版本:4.0.3

內(nèi)容

Web端發(fā)送公告有兩個(gè)方案:

1、web端集成smack,添加公告時(shí)候調(diào)用smack進(jìn)行發(fā)送廣播(默認(rèn)不支持離線廣播,要進(jìn)行改造)比較繁瑣。

2、openfire服務(wù)端進(jìn)行發(fā)送廣播,對外開放http接口,服務(wù)端開發(fā)插件簡單而且權(quán)限比較大。

這里我們選擇了方案2,下面我們進(jìn)行對方案2的開發(fā)過程進(jìn)行講解。

用到Openfire本身的類:

  • org.jivesoftware.util.WebManager:在post請求中進(jìn)行注冊,通過它可以獲取所有用戶。
  • org.jivesoftware.openfire.PresenceManager:可以通過webManager. getPresenceManager();獲取對象,用來判斷用戶是否在登陸狀態(tài)。
  • org.jivesoftware.openfire.XMPPServer:通過它的靜態(tài)方法我們可以獲取RoutingTable(發(fā)送消息)和OfflineMessageStrategy(保存離線消息)。

實(shí)現(xiàn)思路

 

 

實(shí)現(xiàn)核心代碼

  •  post請求
復(fù)制代碼
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        webManager.init(req, resp, req.getSession(), req.getServletContext());//初始化webManager
        Collection<User> users = webManager.getUserManager().getUsers();//獲取所有用戶
        NatureMap natureMap = combineReq(req);
        boolean result = sendMsg(users,natureMap);
        String msg = "";
        if (result) {
            msg = "{\"status\":0}";
        }else{
            msg = "{\"status\":-1,\"msg\":\"用戶名或密碼錯誤\"}";
        }
        respcontent(resp,msg);
    }
復(fù)制代碼

 發(fā)送消息

復(fù)制代碼
private boolean sendMsg(Collection<User> users,NatureMap natureMap) {
        boolean result = true;
        String from = natureMap.getString("from");
        String pwd = natureMap.getString("pwd");
        try {
            String password = AuthFactory.getPassword(from);
            if (pwd!=null&&pwd.endsWith(password)) {
                String body = natureMap.getString("body");
                String subject = natureMap.getString("subject");
                Message message = new Message();
                message.setType(Message.Type.chat);
                message.setBody(body);
                message.setFrom("公告@mvilplss");//目前不加from則會導(dǎo)致客戶端不能自動獲取離線消息,除主動獲取。
                message.setSubject(subject);
                PresenceManager presenceManager = webManager.getPresenceManager();
                for (User user : users) {
                    String username = user.getUsername();
                    message.setTo(username+"@mvilplss");
                    if(presenceManager.isAvailable(user)){
                        XMPPServer.getInstance().getRoutingTable().broadcastPacket(message, false);
                    } else {
                        if (!username.equals(from)) {
                            XMPPServer.getInstance().getOfflineMessageStrategy().storeOffline(message);
                        }
                    }
                }
            }
        } catch (Exception e) {
            result=false;
        }
        return result;
    }
復(fù)制代碼

 增加免登陸

復(fù)制代碼
private static final String SERVICE_NAME = "mybroadcast/broadcast";

public
void destroy() { AuthCheckFilter.removeExclude(SERVICE_NAME); } public void init() throws ServletException { AuthCheckFilter.addExclude(SERVICE_NAME); }
復(fù)制代碼

 

 

結(jié)束

公告接口開發(fā)完畢,公告采用富文本形式編輯,為了手機(jī)端展示方便發(fā)送的公告廣播為標(biāo)題和公告html5的地址。

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    婷婷色国产精品视频一区| 欧美字幕一区二区三区| 偷自拍亚洲欧美一区二页| 伊人久久五月天综合网| 日韩黄色一级片免费收看| 好吊妞视频这里有精品| 又色又爽又无遮挡的视频| 久久人妻人人澡人人妻| 成人国产激情福利久久| 亚洲中文字幕高清乱码毛片| 亚洲人午夜精品射精日韩 | 五月婷婷亚洲综合一区| 狠色婷婷久久一区二区三区| 国产一区二区久久综合| 东京热男人的天堂久久综合| 亚洲成人久久精品国产| 九九热这里只有精品视频 | 日韩精品日韩激情日韩综合| 久久成人国产欧美精品一区二区| 成人午夜视频在线播放| 久久99国产精品果冻传媒| 日韩不卡一区二区在线| 精品视频一区二区三区不卡| 日韩蜜桃一区二区三区| 国产又粗又黄又爽又硬的| 精品国产亚洲av成人一区| 国产精品欧美一区两区| 久久综合九色综合欧美| 日本高清一道一二三区四五区| 欧美一级特黄大片做受大屁股| 一区二区三区免费公开| 亚洲熟女诱惑一区二区| 噜噜中文字幕一区二区| 美女被后入福利在线观看| 日韩精品视频一二三区| 国产成人精品一区二区在线看| 一区二区三区四区亚洲专区| 激情亚洲内射一区二区三区| 国产精品日韩精品最新| 亚洲精品有码中文字幕在线观看| 国产黄色高清内射熟女视频|