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

  • 相关阅读:
    安装Oracle 11g时遇到“【INS-13001】此环境不满足最低配置”的问题解决
    Oracle 11g安装过程
    关于.ipynb文件
    Mysql连接驱动与Java之间的版本不匹配问题(Mysql-connector-java与Java、Mysql版本对应关系)
    Markdown基础语法
    华为2019开发者大会内容小记
    Python开发:NumPy学习(一)ndarray数组
    POJ 1011 -- Sticks
    POJ 2362 -- Square
    POJ 3414 -- Pots
  • 原文地址:https://www.cnblogs.com/ilovewindy/p/3834092.html
Copyright © 2011-2022 走看看