Pushlet是一个开源的 Comet 框架,利用观察者模式订阅相关事件,对于其中的单播特性其实也可以用来做web坐席即时聊天
为了能够进行Web及时聊天,首先需要有一个固定的明确的消息ID,固定的明确的消息事件,能够进行点对点的消息发送、接受,这里对pushlet就行修改,
---------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------
1、新建SessionManager,这里命名MySessionManager
package com.serveToClient;
import nl.justobjects.pushlet.core.Event;
import nl.justobjects.pushlet.core.Session;
import nl.justobjects.pushlet.core.SessionManager;
import nl.justobjects.pushlet.util.PushletException;
/**
* pushlet session
*
* @author muyunfei
*
* <p>Modification History:</p>
* <p>Date Author Description</p>
* <p>------------------------------------------------------------------</p>
* <p>2014-7-21 muyunfei 新建</p>
* <p> </p>
*/
public class MySessionManager extends SessionManager {
public Session createSession(Event anEvent) throws PushletException {
// TODO Auto-generated method stub
//获取是什么类型的事件
String eventName= anEvent.getField(anEvent.P_SUBJECT);
String eventPerson=anEvent.getField("p_id");
System.out.println(eventName);
System.out.println(eventPerson);
//根据传过来的参数生成sessionId
return Session.create(anEvent.getField("p_id", "visitied"));
}
}
2、修改pushlet.properties中sessionmanager.class(别忘了在 web.xml配置/pushlet.srv)
3、修改ajax-pushlet-client.js中_doRequest函数
其中的sessionid(不是PL.sessionId),在自己的页面定义一个全局变量,如:
4、利用唯一的事件ID,sessionid后台发送消息
这样就可以做实现pushlet的单播,然后根据自己的规则定义sessionid,为每次对话创建不同的事件id,即可完成web客服坐席。。。。。。