日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java推送Comet_使用Comet4j实现消息推送

發布時間:2024/9/27 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java推送Comet_使用Comet4j实现消息推送 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

public?class?NewMsgCollector?extends?ConnectListener?implements?ServletContextListener?{

private?static?final?String?CHANNEL?=?"hello";

public?void?contextInitialized(ServletContextEvent?contextEvent)?{

//注冊應用的channel

CometContext?context?=?CometContext.getInstance();

context.registChannel(CHANNEL);

//添加監聽器

CometEngine?engine?=?CometContext.getInstance().getEngine();

engine.addConnectListener(this);

}

public?void?contextDestroyed(ServletContextEvent?contextEvent)?{}

public?boolean?handleEvent(ConnectEvent?connEvent)?{

final?CometConnection?conn?=?connEvent.getConn();

//建立連接和用戶的關系

doCache(conn);

final?String?connId?=?conn.getId();

/*模擬業務邏輯*/

Timer?timer?=?new?Timer(true);

TimerTask?task?=?new?TimerTask()?{

public?void?run()?{

CometEngine?engine?=?CometContext.getInstance().getEngine();

//推送到所有客戶端

//engine.sendToAll("hello",?connId?+?"?-?you?have?"?+?((int)(Math.random()?*?9)?+?1)?+?"?new?message?
");

if?(CacheManager.getContent(connId).isExpired())?{

doCache(conn);

}

if?(simulateService(String.valueOf(CacheManager.getContent(connId).getValue())))?{

//推送到指定的客戶端

engine.sendTo(CHANNEL,?engine.getConnection(connId),?CacheManager.getContent(connId).getValue()

+?"?-?you?have?"?+?((int)?(Math.random()?*?9)?+?1)?+?"?new?message?
");

}

}

};

timer.schedule(task,?10000,?(1000?*?5));

return?true;

}

private?void?doCache(final?CometConnection?conn)?{

Object?userId?=?conn.getRequest().getSession().getAttribute("currentUserId");

if?(userId?!=?null)?{

CacheManager.putContent(conn.getId(),?String.valueOf(userId),?CacheConstant.EXPIRE_AFTER_ONE_HOUR);

}

}

/**

*?模擬業務

*?返回true,false

*?true即表示需要推送消息,false即不需要推送

*/

private?boolean?simulateService(String?id)?{

int?flag?=?(int)?Math.round(Math.random());

if?(flag?==?0)?{

System.out.println(id?+?"?-?no?messge...");

return?false;

}

System.out.println(id?+?"?-?messge?is?coming...");

return?true;

}

}

總結

以上是生活随笔為你收集整理的java推送Comet_使用Comet4j实现消息推送的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。