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

转载于:https://www.cnblogs.com/ilovewindy/p/3834092.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值