首页 > 代码库 > Openfire:通过Servlet群发消息
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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。