SSH集成Pushlet

首先是需要的资源:

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