本人近来对WebQQ的实现尤为感兴趣,自己也想动手做一个类似的WebQQ,
即便功能简单些,能私聊,能群聊即可。
但是还有一些问题点没有想清楚,希望对方面有认识的高手多提点思路。问题点如下:
1、如果我打开与好友的聊天对话框,如何将信息发送出去(难道每发一条就Ajax一次?)
2、如何判断我有未读消息(QQ的做法是右下角有头像闪动,我该如何实现呢?)
3、如何实现信息的及时显示
4、如果每发一条信息就做一次Ajax请求的话,服务器负载一定会过重吧?
5、(补充中...)期待大家的回复

解决方案 »

  1.   

    难道你想发了一天的消息到晚上时才,用一个ajax请求?
      

  2.   

    不与服务端通讯,服务端怎么收消息?
    不刷新,怎么获取服务端的最新数据?(别人给你发的消息)
    B/S结构就这样,你当是C/S啊?
      

  3.   

    3、如何实现信息的及时显示
    我的办法是:
    function send(msg){
    xmlHttp_1负责信息的即时显示            
    xmlHttp_2负责再线人数即时显示
    setTimeout(function(){send(msg)},1000);
    }
    这个在ff上很灵,在ie上有问题,我是自学,不知这个写法是否有不合理的地方,也很想知道别人都是怎样做的,
      

  4.   

    两个ajax,一个用于检查新消息(周期性检查),一个用于发送.
    webqq貌似用的serverpush,就是与服务器建立一定周期的长连接.服务端检查新消息,有消息时通知客户端.而不是客户端每隔一定时间去问服务端是否有新消息.从楼主问的这几个问题,觉得楼主还得多研究,多学习. 加油吧...期待你的作品.
      

  5.   

    服务器推得东东 ?server push?那个很占服务器资源的,
    给LZ一点提示吧其实聊天的内容不一定要放到数据库的,
    你可以参考下 http://www.bufanlu.com/chat/
      

  6.   

    其实基于b/s架构的及时消息周知,目前看无非几种方法:
    1,浏览器的polling机制,浏览器跑定时器去轮询服务器看是否有新的消息到来;
    2,基于server的push机制,通过浏览器和服务器建立一个长链接,服务器发现有新消息,主动push到浏览器;
    3,通过浏览器插件机制,扩展浏览器的功能,使得可以支持类似c/s的方式,服务器可以下发消息给浏览器;
    但几个点比较重要:
    1,信令和消息数据的分离实现,信令用一个bit来表示是否有消息,而消息数据比较大,进行轮询性能比较差,轮询是走信令通道,目的是信息量小和快,可以知道是否有消息到来,一旦有,用户点击的时候才去拉
    具体的消息内容,并且可以一次拉几条数据;
    2,消息的内容一般不存储db,而是用cache或者文件cache;
      

  7.   

    4、如果每发一条信息就做一次Ajax请求的话,服务器负载一定会过重吧?
    当初就因为服务器问题,差点把马化腾拖垮!
      

  8.   

    1、如果我打开与好友的聊天对话框,如何将信息发送出去(难道每发一条就Ajax一次?) 
       消息发出,聊天的人员要接收到信息,肯定会有服务器请求,所以要ajax一次。
    2、如何判断我有未读消息(QQ的做法是右下角有头像闪动,我该如何实现呢?) 
       未读消息可以用一个隐藏的button,当有新的信息,或者是其他的(比如好友邀请),显示这个button,
       当让要用ajax实现,实时的轮询。
    3、如何实现信息的及时显示 
        ajax对象轮询,这个可以像楼上说的,不去检测信息,而是检测信令,确切的查看信息的时候再去ajax取数据。
    4、如果每发一条信息就做一次Ajax请求的话,服务器负载一定会过重吧?
       这个只能适当的处理,实时的聊天系统是必要的ajax请求,因为要和服务器做交互,聊天信息是从服务器传递的。
       注: 以上的ajax轮询事件,每个事件创建不同的xmlHttpRequest 对象来做。
      希望LZ的项目早日上线!
      

  9.   

    --可以看一下我的blog,以前做的一个demo例子代码,通过一个http连接,服务器发现图片变更主动push到浏览器的例子,当然网上也有许多其他的例子,comet push的技术相关的,但个人觉得这种技术目前还不是很适合于真正的项目,做一下技术探讨还可以。
      

  10.   

    http://topic.csdn.net/u/20090209/14/333ee707-4df3-45da-9893-af7a9c4bc674.html
      

  11.   

    别说什么webqq 了,lz 还是先做一个聊天室练练手吧, 发送消息用的是ajax 广播,知道别人给你发消息,那就的用 反向Ajax 了。