虽然是求助  ,先总结下我的想法web聊天    页面自动刷新已经被废弃了AJAX定时取  实现了页面无刷新  但是还是每几秒到服务器取数据,服务器数据一更新不能及时 ‘推’到客户端前一阵看到了个词 叫comet   了解了一下   实现方法之一是   AJAX发送请求  服务器端脚本做‘死’循环,每次循环睡一下,直到满足条件(新聊天记录)才返回  ,返回后客户端处理数据,然后再连接到服务器我想问的是  这样做有什么好处? 实现了服务器推?     数据取回 处理  这段时间,服务器端数据可能会更新几次         这就是说,这种‘推’ 没能实现服务器端每次数据更新都推到客户端在做一款web游戏的聊天   希望高手指点下   怎么去实现比较好服务器端的聊天数据  怎么存储   频繁更新  用数据库好 还是用文本  有没有可能实现服务器端不保存记录,每次把数据'推'到客户端保存

解决方案 »

  1.   

    再顶一下  顺便再提个问题
    PHPER都在哪混呢?
      

  2.   

    先保存到session里面,
    session结束后保存到数据库。
      

  3.   

    做web聊天建议用flash在FlashMediaServer2下开发。
      

  4.   

    以前做在线客服工具的时候做过,当时是ajax一秒一次,基本感觉不到延时,服务器也还能吃得消。觉得在服务器端死循环不妥。
      

  5.   

    google的Gtalk
    CSDN的即时消息,均是推技术
    可以实现的你google下
      

  6.   

    大多数PHPER都混迹于www.phpchina.com
      

  7.   

    这个不错,你也可以用java+flex做一个即时聊天的,很简单的,网上搜一下有不少,不过常见的那个范例有个跨域访问的安全问题,google下都可以搞定的.
      

  8.   

    web聊天我之前做过一个,感觉不是特别的好,对服务器的负担很大.与数据库的交互太频繁了
      

  9.   

    死循环?呵,那人太会想了,多几个死循环进程,服务器不档掉才怪。
    就算不档,ajax的优点就一点也没用了。要我做,其实很简单,首先肯定是使用数据库,每条发言都有个递增的id,ajax只要把本机上的最后的那条发言的id发给服务器,服务器把大于这个id的发言发给客户端就可以了。如果ajax发空id就把最新的几条发言发过去。至于“实现了服务器推”。那是实现不了的,因为网页服务器是不能主动和客户端通信的,只有在客户端有请求比如ajax请求,服务器才会进行响应。要实现这个方法除非是应用程序,或客户端使用控件。
      

  10.   

    我第一个web项目就是聊天开发(简单的那种)。
    网上随便搜索了一段代码,然后结合数据库就完事了。客户端1秒刷一次,服务器端15秒更新一次数据库,中间的内容全部用缓存保存起来。因为.net提供缓存,所以比较容易实现。我看过一个php聊天系统,它是用文件作为缓存的。速度稍微有点慢,但做的很好。
      

  11.   

    刚上来3   楼的  ..保存在session里   我不太明白你的想法  session不是所有用户通用的  其他用户读取记录怎么读取?4L  的建议  好多人给我提过了  ..但是  不会FLASH5L  的方法是AJAX 轮询  不知道是用轮询好   还是 死循环 长轮询好...搜不到分析帖子6L  google的是AJAX长轮询实现的    CSDN就不知道了  7L  ..我去搜下,8L  偶尔去..也没见怎么多  9L  有时间的话 我会把JAVA学了  ..呵呵10L 13L PHP有个东西叫memcache吧  打算用它  不用数据库存了11L  12L   11L说的ID 我是用的一个时间戳 效果一样的
    前一段时间 我主要是想把聊天记录  直接推到客户端  服务器不保存聊天记录  想歪了  所以卡住
    现在用memcache缓存数据  实现就简单多了谢谢各位,
    最新相关问题地址:
    http://topic.csdn.net/u/20080915/10/cb4d8c17-0265-4ef3-b86e-6bc984bd22bb.html?seed=607442903
      

  12.   

    server push 看看google talk
      

  13.   

    呵呵,楼主太小看PHP版了在ajax中给了200分求解,在这里只给了20分这个技术见过一朋友做游戏实现的一般的简单的聊天也用推技术
    长连接推也是可以的,网上搜搜吧普通聊天用ajax可以,建一动态聊天室,用完就删只能说这么多了
      

  14.   

    关于 comet 这个东西并是不信东西,只是拿包装重新包包又出来的,实现的方式有很多种,他的局限在于http的链接方式,每次都是新连接,无法长时间连接,所以用这个方式来模拟。有很多种方法 iframe , ajax,
    百变不离其中,客户端 Request 一个,服务端做循环,用sleep来释放cpu,所以不会有占用很严重的cpu的情况。有数据时就返回,(如果这个时候有新数据的时候,会丢失么,当然不会了,下次的Request 可以返回。)客户端收到数据库这个连接就断开。这个就是所谓的 polling 。然后客户端再发起一个Request ,循环下去。说说lz说的ajax方式:
    有个例子:
    http://kerphi.zeitoun.net/articles/comet_and_php/comet-ajax/
    另:如果说这个 长连接用别的方式的话,比如 php socket ,或者java 或者 erlang ,那就不是有太多问题了。
    楼主对 comet 实现的方式,(服务端)比较局限。另外,如果真有大量链接,完全可以考虑上述方式实现,目前 java , erlang 都有比较成熟的(服务端)实现方式。
      

  15.   

    maoshanhai.com/chat ->试下这个 ,comet的