程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2EE >> Spring整合DWR comet 實現無刷新 多人聊天室(3)

Spring整合DWR comet 實現無刷新 多人聊天室(3)

編輯:J2EE

二、聊天室相關業務實現

1、 聊天實體類Model

  1. package com.hoo.entity;
  2. import Java.util.Date;
  3. /**
  4. * <b>function:</b>
  5. * @author hoojo
  6. * @createDate 2011-6-3 下午06:40:07
  7. * @file Message.Java
  8. * @package com.hoo.entity
  9. * @project DWRComet
  10. * @blog http://blog.csdn.Net/IBM_hoojo
  11. * @email [email protected]
  12. * @version 1.0
  13. */
  14. public class Message {
  15. private int id;
  16. private String msg;
  17. private Date time;
  18. //getter、setter
  19. }

2、 編寫聊天信息的事件

  1. package com.hoo.chat;
  2. import org.springframework.context.ApplicationEvent;
  3. /**
  4. * <b>function:</b>發送聊天信息事件
  5. * @author hoojo
  6. * @createDate 2011-6-7 上午11:24:21
  7. * @file MessageEvent.Java
  8. * @package com.hoo.util
  9. * @project DWRComet
  10. * @blog http://blog.csdn.Net/IBM_hoojo
  11. * @email [email protected]
  12. * @version 1.0
  13. */
  14. public class ChatMessageEvent extends ApplicationEvent {
  15. private static final long serialVersionUID = 1L;
  16. public ChatMessageEvent(Object source) {
  17. super(source);
  18. }
  19. }

繼承ApplicationEvent,構造參數用於傳遞發送過來的消息。這個事件需要一個監聽器監聽,一旦觸發了這個事件,我們就可以向客戶端發送消息。

3、 發送消息服務類,用戶客戶端發送消息。dwr需要暴露這個類裡面的發送消息的方法

  1. package com.hoo.chat;
  2. import org.springframework.beans.BeansException;
  3. import org.springframework.context.ApplicationContext;
  4. import org.springframework.context.ApplicationContextAware;
  5. import com.hoo.entity.Message;
  6. /**
  7. * <b>function:</b>客戶端發消息服務類業務
  8. * @author hoojo
  9. * @createDate 2011-6-7 下午02:12:47
  10. * @file ChatService.Java
  11. * @package com.hoo.chat
  12. * @project DWRComet
  13. * @blog http://blog.csdn.Net/IBM_hoojo
  14. * @email [email protected]
  15. * @version 1.0
  16. */
  17. public class ChatService implements ApplicationContextAware {
  18. private ApplicationContext ctx;
  19. public void setApplicationContext(ApplicationContext ctx) throws BeansException {
  20. this.ctx = ctx;
  21. }
  22. /**
  23. * <b>function:</b> 向服務器發送信息,服務器端監聽ChatMessageEvent事件,當有事件觸發就向所有客戶端發送信息
  24. * @author hoojo
  25. * @createDate 2011-6-8 下午12:37:24
  26. * @param msg
  27. */
  28. public void sendMessage(Message msg) {
  29. //發布事件
  30. ctx.publishEvent(new ChatMessageEvent(msg));
  31. }
  32. }

上面的sendMessage需要浏覽器客戶端調用此方法完成消息的發布,傳遞一個Message對象,並且是觸發ChatMessageEvent事件。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved