DWR实现消息推送(基于单对单聊天)-第三节

一、实现原理剖析:

1.在群聊中,我们知道如何通过uri获得所有的session集合,但在单对单的聊天中并不需要获取全部,他只需要在彼此的session中进行聊天的管理/展示。

2.为此我们通过构造Map集合,通过单独唯一的key(用户名或者id编号,唯一即可),并同时将当前的session,put进去便可。当我们要指定发送对象时,我们便可获取

被发送对象的session,构建util。调用客户端编写好的js响应方法,产生相应的气泡提示了。

流程:Map构建-》发送消息给指定对象-》通过Map来get对象的session-》通过session构建utli-》util对客户端的js进行调用

ps:前提我们知道dwr中的远程调用Java类是单例模式下的。否则根本无法保存每一个session。

二、实现核心代码:

1.远程调用类:

public class MsgPushService {
	public static Map<String, Object> sessionManager = new HashMap<String, Object>();

	/**
	 * 添加客户端session ps:firfox有错误提示..-已解决,将跳转放置dwr的回调函数中
	 * 1.登录成功后进行调用
	 * @param username
	 */
	public String addScriptSession(String username, HttpServletRequest req) {
		if(!"".equals(username)&&username!=null){
			sessionManager.put(username, WebContextFactory.get().getScriptSession());
		}
		return "ok";
	}

	public ScriptSession getScriptSession(String username) {
		return (ScriptSession) sessionManager.get(username);
	}

	/**
	 * 2.发送消息时进行调用
	 * @param senderName
	 * @param receiverName
	 * @param title
	 * @param content
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public String pushMsg(String senderName, String receiverName, String title,
			String content, HttpServletRequest req) {
		ScriptSes
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值