1、 聊天實體類Model
- package com.hoo.entity;
- import Java.util.Date;
- /**
- * <b>function:</b>
- * @author hoojo
- * @createDate 2011-6-3 下午06:40:07
- * @file Message.Java
- * @package com.hoo.entity
- * @project DWRComet
- * @blog http://blog.csdn.Net/IBM_hoojo
- * @email [email protected]
- * @version 1.0
- */
- public class Message {
- private int id;
- private String msg;
- private Date time;
- //getter、setter
- }
2、 編寫聊天信息的事件
- package com.hoo.chat;
- import org.springframework.context.ApplicationEvent;
- /**
- * <b>function:</b>發送聊天信息事件
- * @author hoojo
- * @createDate 2011-6-7 上午11:24:21
- * @file MessageEvent.Java
- * @package com.hoo.util
- * @project DWRComet
- * @blog http://blog.csdn.Net/IBM_hoojo
- * @email [email protected]
- * @version 1.0
- */
- public class ChatMessageEvent extends ApplicationEvent {
- private static final long serialVersionUID = 1L;
- public ChatMessageEvent(Object source) {
- super(source);
- }
- }
繼承ApplicationEvent,構造參數用於傳遞發送過來的消息。這個事件需要一個監聽器監聽,一旦觸發了這個事件,我們就可以向客戶端發送消息。
3、 發送消息服務類,用戶客戶端發送消息。dwr需要暴露這個類裡面的發送消息的方法
- package com.hoo.chat;
- import org.springframework.beans.BeansException;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.ApplicationContextAware;
- import com.hoo.entity.Message;
- /**
- * <b>function:</b>客戶端發消息服務類業務
- * @author hoojo
- * @createDate 2011-6-7 下午02:12:47
- * @file ChatService.Java
- * @package com.hoo.chat
- * @project DWRComet
- * @blog http://blog.csdn.Net/IBM_hoojo
- * @email [email protected]
- * @version 1.0
- */
- public class ChatService implements ApplicationContextAware {
- private ApplicationContext ctx;
- public void setApplicationContext(ApplicationContext ctx) throws BeansException {
- this.ctx = ctx;
- }
- /**
- * <b>function:</b> 向服務器發送信息,服務器端監聽ChatMessageEvent事件,當有事件觸發就向所有客戶端發送信息
- * @author hoojo
- * @createDate 2011-6-8 下午12:37:24
- * @param msg
- */
- public void sendMessage(Message msg) {
- //發布事件
- ctx.publishEvent(new ChatMessageEvent(msg));
- }
- }
上面的sendMessage需要浏覽器客戶端調用此方法完成消息的發布,傳遞一個Message對象,並且是觸發ChatMessageEvent事件。