首先是需要的资源:
1)、pushlet.jar
2)、ajax-pushlet-client.js
第一步、web.xml配置servlet
<servlet>
<servlet-name>pushlet</servlet-name>
<servlet-class>com.newgsn.tvmall.pushlet.servlet.Pushlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>pushlet</servlet-name>
<url-pattern>/pushlet.srv</url-pattern>
</servlet-mapping>
Pushlet类自定义类,继承自nl.justobjects.pushlet.servlet.Pushlet.java
第二步、创建自定义的Pushlet类
初始化pushlet,并注入applicationContext
public class Pushlet extends nl.justobjects.pushlet.servlet.Pushlet {
/**
*
*/
private static final long serialVersionUID = 1L;
public void init() throws ServletException {
super.init();
ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(getServletContext());
SessionManager.getInstance().initApplicationContext(ctx);
}
}
第三步、创建推送消息工具类
public class PushletUtil {
private static String PLATFORM_MESSAGE = "UNI_CAST_MESSAGE";
/**
* 发送消息至客户端
* @param sessionId
* @param msg
*/
public static void sendMessage(String sessionId, String msg){
if(StringUtils.isNotBlank(sessionId) && SessionManager.getInstance().hasSession(sessionId)){
Event event = Event.createDataEvent("message");
event.setField(PLATFORM_MESSAGE, msg);
Dispatcher.getInstance().unicast(event, sessionId);
}
}
/**
* 广播至所有在线客户端
* @param msg
*/
public static void sendBroadcast(String msg){
Event event = Event.createDataEvent("message");
event.setField(PLATFORM_MESSAGE, msg);
Dispatcher.getInstance().broadcast(event);
}
}
实现点对点推送和广播推送
第四步、jsp页面接收消息
PL._init();
PL.userId='qinfx';
p_join_listen("message");
function onData(event) {
if(event.get('UNI_CAST_MESSAGE') != undefined ) {
alert(event.get('UNI_CAST_MESSAGE'));
}
if(event.get('UNI_LOGOFF') != undefined ) {
alert(event.get('UNI_LOGOFF'));
}
}
PL.userId为当前登录用户的id
来源:https://www.cnblogs.com/siyu/p/3811454.html