powerwind 发表于 2007-4-21 01:33

如何实现Web聊天室——JSP

很久以前就想要做一个聊天室,因为没有想到完全的解决方案,就一直没有动手。想的时候越想越多,困难就越多,以致无法实现。

简单的聊天室可以只是群发信息(公聊)和私聊功能即可。可以加点功能如踢人、屏蔽某人、发送表情、图片音乐等等。

如果做一个很简单的聊天室,用20分钟就足够。不保存数据到数据库,聊天内容直接放到全局变量application中,每隔一秒半秒刷新一次页面。

为了做一个比较满意的聊天室,整个晚上找资料,没发现有什么在思想给指导的文章,倒是找到了一些JSP源码。看了一些例子,都大同小异,经过思考,得到如下体会。

数据库设计:
发送者、接收者、内容、发送时间
这四个是基本不可少的,当接收者是比较特殊的值时,表示公聊。

页面刷新:
虽然网上有无刷新聊天室,但我觉得都一样有刷新,即使是用Ajax技术也是“暗地里”默默地刷新。
以前的做法是使用隐藏框架,现在可以用ajax。不过感觉差别不大。

在线离线:
在线是很简单的,只要登录了,就是在线,往在线列表加一个人就可以了。但离线就有点不同,因为人家会悄悄走掉。一般做法可以把session的生命周期设置得很短,甚至短到1分钟,缺点可想而知。还有一种做法是,在用户关闭浏览器时向服务器发送信号,即在onunload事件中添加处理。两者结合的话,可以设置session的生命周期长些,实现HttpSessionBindingListener接口,管理在线离线。

前台设计:
要做漂亮靠美工,要灵活且功能多多就要大量使用JS代码了。这个我没想太多。


基本上思考成这样,明天再具体实现,希望睡前能有想到更好的东西。

PS:请多多指教!

我是猪排 发表于 2007-4-21 09:06

前台设计:
要做漂亮靠美工,要灵活且功能多多就要大量使用JS代码了。这个我没想太多。

功能性固然重要,美观性也不可忽视!

如果界面臭的要死,聊起天来会少了很多气氛。

外行人路过!

iptton 发表于 2007-4-21 12:03

用FLASH+php实现....

andylan 发表于 2007-4-22 10:44

我用dojo的工具包感觉非常好用~~
可以减少js代码~~

powerwind 发表于 2007-4-22 12:09

原来打算用prototype.js包的,不知道dojo如何。
有空看一下,多个选择,谁简单就用谁

xinggg22 发表于 2007-4-22 16:12

不错,支持一下。做过小论坛用jsp,不知是否可以帮你。

powerwind 发表于 2007-4-22 16:33

xinggg22 ,先谢了!

今天看一个PHP的聊天室实例时,它竟然在数据库保存在线信息,每隔10秒去查询,返回在线情况。
为什么不保存在application对象?虽然占内存,但人数一定有限制的,不会太多,比每次去查询数据库的开销要小吧?

还没有动手做,因为聊天室只是企业网站的一个小部分,目前仍在考虑整体结构。

xinggg22 发表于 2007-4-23 15:58

偶是区区菜鸟阿!惭愧阿!!
   不知道是否有研究struts+hibernate+spring之类的东西?
    web聊天室可否做好发个代码give me??

powerwind 发表于 2007-4-23 16:08

struts+hibernate做个简单的东西,这次用纯JSP做,什么事情都自己动手,锻炼一下

hjack 发表于 2007-4-25 19:34

性能方面呢?
页: [1]
查看完整版本: 如何实现Web聊天室——JSP