测试地址:
http://www.shufou.com/chat/,放在朋友的服务器上,欢迎测试并提出建议哦,谢谢大家,也祝大家鼠年吉祥。
需要源码的见本文最后
支持下列浏览器(实际测试)
* IE7、IE6
* Firefox2
* Opera9.5beta
* Safari3(汉化版)
不支持下列浏览器(实际测试)
* IE5.5(存在一些问题,解决需要时间)
为了更好的用户体验请注意
* firefox2的SuperDragAndGo插件会导致onmousedown/onmouseup事件失效,请关闭
* opera默认设置不允许js代码检测鼠标右键点击事件,请修改
详细功能列表
* 注册、登录,登录支持记住帐号、记住密码和自动登陆选项
* 修改本人状态、签名并通知给好友
* 修改本人档案
* 好友列表的状态、组别排序以及大图标显示
* 添加、屏蔽、删除好友
* 查看聊天记录,支持下载到本地
* 发送、接收带图片表情的消息
* 发送、接受闪屏振动
* 主面板根据姓名、邮箱搜索好友功能
* 系统设置
* 添加、修改好友昵称
* 联系人卡片
* 三种(好友上线、新消息、闪屏)声音提示
部分源码
因为本WebIM程序我已经答应给朋友使用,为了他网站的数据安全,我公开的代码
不包含数据部分,js部分未压缩有注释。下面一张图就是这部分代码运行的截图!
地址:
http://www.qgy18.com/webim.rar
其实压缩包data目录下有测试数据,你完全可以按照测试数据的格式自己写数据部分。
08.02.07补充:谢谢大家的留言,我这里简单的说下压缩包里没提供的部分代码的实现思路,如果大家觉得有更好的方法欢迎提出
1.数据库的设计这个因人而异,注册、登陆是最基本的东西就不写了;
2.为了节约网络流量和浏览器资源占用,js只设立2个定时器,一个定时器负责向服务器取回数据,另一个是检测1分钟用户的活跃程度(发送、接受消息),并依据这个活跃程度来调整第一个定时器请求服务器的间隔。简单说来:打个比方,就是如果你比较活跃,可每1s钟我就去请求下服务器,如果你不活跃,可能要间隔5s我才去请求一次,这也是为了减轻服务器的压力嘛。
3.程序核心数据表是消息表,这个表应该包括如下部分:消息来源、消息去向、消息类型、消息内容等等。其中消息类型应该是一个枚举:比方说1为文本2为闪屏震动3为广告等等。这样客户端ajax取到这些数据后,就可以用一个switch来判断,是该显示消息呢,还是该显示闪屏呢,或者是该把某某用户设置为下线等等。
4.鉴于webim是运行在浏览器的,如果别人把浏览器关闭了,那么服务器怎么知道这个用户下线了呢?有人说可以用onbeforeunload。我采用的是另外一个方法:前面提到每个客户端都有1个定时器定时向服务器请求消息,那么我在每次请求的同时把他的最后活动时间设置为当前。这样做有什么用呢?很简单,如果一个用户的状态是在线但他的最后活动时间是1分钟前,那么我们就可以断定他其实已经下线了,就可以把他的状态设置为下线并向他所有在线好友广播他下线了。怎么广播呢?也很简单,往消息表写记录嘛。
5.如果webim用的人多了,一天要产生大量的数据,这样数据越多速度就越慢。怎么办呢?我这么做的,我把消息表分成了2部分:用户消息表和系统消息表,用户消息是用户在聊天记录能看到的,系统消息则看不到。这样做有什么好处呢?好处就是系统消息表里的数据可以取完就删,减少数据库的体积。
其实如果你对动态语言和数据库有一定的了解,webim的后台开发相对于UI来说还是比较容易的,反正我是这么认为的。大家如果有什么问题,加我MSN吧!
quguangyu18@hotmail.com,也可以在本帖,或我的blog
http://www.qgy18.com提出,我会尽力解答的。
[[i] 本帖最后由 qgy18 于 2008-2-7 16:18 编辑 [/i]]