|
很久以前就想要做一个聊天室,因为没有想到完全的解决方案,就一直没有动手。想的时候越想越多,困难就越多,以致无法实现。
简单的聊天室可以只是群发信息(公聊)和私聊功能即可。可以加点功能如踢人、屏蔽某人、发送表情、图片音乐等等。
如果做一个很简单的聊天室,用20分钟就足够。不保存数据到数据库,聊天内容直接放到全局变量application中,每隔一秒半秒刷新一次页面。
为了做一个比较满意的聊天室,整个晚上找资料,没发现有什么在思想给指导的文章,倒是找到了一些JSP源码。看了一些例子,都大同小异,经过思考,得到如下体会。
数据库设计:
发送者、接收者、内容、发送时间
这四个是基本不可少的,当接收者是比较特殊的值时,表示公聊。
页面刷新:
虽然网上有无刷新聊天室,但我觉得都一样有刷新,即使是用Ajax技术也是“暗地里”默默地刷新。
以前的做法是使用隐藏框架,现在可以用ajax。不过感觉差别不大。
在线离线:
在线是很简单的,只要登录了,就是在线,往在线列表加一个人就可以了。但离线就有点不同,因为人家会悄悄走掉。一般做法可以把session的生命周期设置得很短,甚至短到1分钟,缺点可想而知。还有一种做法是,在用户关闭浏览器时向服务器发送信号,即在onunload事件中添加处理。两者结合的话,可以设置session的生命周期长些,实现HttpSessionBindingListener接口,管理在线离线。
前台设计:
要做漂亮靠美工,要灵活且功能多多就要大量使用JS代码了。这个我没想太多。
基本上思考成这样,明天再具体实现,希望睡前能有想到更好的东西。
PS:请多多指教! |
|