Openfire:通过Servlet群发消息
2024-09-25 21:34:37
在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 【第六章】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
- 黄聪:如何为IIS增加svg和woff等字体格式的MIME
- c++ 引用和指针
- 如何查看经过编码的cookie?
- 第七课第四节,T语言流程语句(版本5.0)
- angular_$attrs
- OC基础--description方法
- OD 内存映射 属主找不到当前程序名解决办法 和 跟随ClassProc 反汇编窗口空白解决办法
- 使用OC语言编写两个超大数相乘或相加的算法的思路和超大正整数相乘的代码
- Javascript Arguments,calle,caller,call,apply
- jQery无缝滚动效果
- Minimum Window Substring &;&;&; Longest Substring Without Repeating Characters 快慢指针,都不会退,用hashmap或者其他结构保证
- 12个很少被人知道的CSS事实
- kvm的sshd起不来
- Spring学习(17)--- 三种装配Bean方式比较
- 201521123108 《Java程序设计》第7周学习总结
- AngularJS1.X学习笔记10-自定义指令(下)
- 执行docker命令遇到 Get Permission Denied
- Python学习笔记五
- Vue2.0增删改查案例(Vue+Less+LocalStorage)