zoukankan      html  css  js  c++  java
  • Openfire:通过Servlet群发消息

    在Openfire中自带有Broadcase插件,可以让我们群发消息给全部用户或者组。不过如果是我们通过Servlet来实现这一功能,那么是能够增加一定的灵活性的。具体做法直接看Demo代码:

    public class SafeServlet extends HttpServlet {
    
        private JID serverAddress;
        private MessageRouter router;
        private UserManager userManager;
    
        @Override
        public void init() throws ServletException {
            super.init();
        }
    
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            super.doGet(request, response);
    
            // 获取服务器地址
            serverAddress = new JID(XMPPServer.getInstance().getServerInfo().getXMPPDomain());
            router = XMPPServer.getInstance().getMessageRouter();
            userManager = UserManager.getInstance();
    
            System.out.println("Require SafeServlet GET Method");
    
            // 创建消息类
            final Message message = new Message();
            message.setFrom(serverAddress);
            message.setSubject("Test subject");
            message.setBody("Test body");
            message.setType(Message.Type.chat);
    
            // 获取所有用户
            Collection<User> users = userManager.getUsers();
            String xmppdomain = "@" + JiveGlobals.getProperty("xmpp.domain");
            // 对所有用户进行遍历,发送消息
            for (User u : users)
            {
                // 创建需要发送消息的备份,只将发送对象进行修改
                final Message newMessage = message.createCopy();
                newMessage.setTo(u.getUsername() + xmppdomain);
                try {
                    TimerTask messageTask = new TimerTask() {
                        @Override
                        public void run() {
                            router.route(newMessage);
                        }
                    };
    
                    TaskEngine.getInstance().schedule(messageTask, 5000);
                } catch (Exception e) {
                    Log.error(e.getMessage(), e);
                }
            }
        }
    
        @Override
        public void destroy() {
            super.destroy();
            
            serverAddress = null;
            router = null;
            userManager = null;
        }
    }

     Servlet的配置可以参考此文:http://www.cnblogs.com/ilovewindy/p/3834003.html

  • 相关阅读:
    Python Xcode搭建Python环境以及使用PyCharm CE
    Python 集体智慧编程PDF
    Swift tableview自带的刷新控件
    iOS 类似朋友圈的图片浏览器SDPhotoBrowser
    程序员应掌握的算法
    C++ 知识点总结复习
    iOS 图片的拉伸,取固定区域显示
    iOS 获取一个不变的UDID
    iOS 应用中加载文档pdf/word/txt
    LeetCode-Design Snake Game
  • 原文地址:https://www.cnblogs.com/ilovewindy/p/3834092.html
Copyright © 2011-2022 走看看