我看过那些聊天室   就是那种一对一聊天的  而且看样子不是那种靠刷新做的我感觉应该是ajax来做的  不过我前两天试着做了一下 失败了哎 谁有这方面的经验 说一下吧

解决方案 »

  1.   

    我以前问过同样的问题http://hi.csdn.net/link.php?url=http://topic.csdn.net%2Fu%2F20090819%2F01%2F924a04fd-6932-4057-9698-6c9e27ab6749.html
      

  2.   

    是啊 用ajax每间隔几毫秒读取一下数据就可以了
      

  3.   

    用ajax每间隔几毫秒读取一下数据就可以了///
    这还是刷新啊。
      

  4.   

    你看看这个行不行,可以研究一下啊,在线客服网页聊天的,http://blog.csdn.net/yw1386/archive/2009/12/14/5006228.aspx
      

  5.   

    这个可以,不过有点不合理,可以搜下 Server Plush 技术。
      

  6.   

    google->comet(1)客户端ajax发送请求->(2)成功回调函数->(1)客户端ajax发送请求基本上客户端是轮询的模型,不同的是,并不是由客户端不停发送请求,而是发送请求后,php server端检查没任何数据刷新的情况下要hold住请求(使用while循环),while循环里检测数据是否刷新,一旦发生数据刷新,就马上退出while循环,返回数据给客户端,客户端这时候才再次发送请求。
      

  7.   

    comet 我在看 不过AJAX 似乎不行  除非刷新 
      

  8.   


    ajax可以借用框架, 要不你真是晕了
      

  9.   

    ajax 就行了.是你不懂ajax,它不用刷新.
      

  10.   

    这样吗?
    是没有刷新网页 但是他重新发送了请求 和刷新没有区别  function fs(){
     var ajax = cajax();
     
     function ready(){
     if(ajax.readyState==4){
     var str=ajax.responseText;
     if(str)
     document.getElementById("xsh").value=str;
     document.getElementById("shr").innerHTML="";
     document.getElementById("xsh").scrollTop=document.getElementById("xsh").scrollTop+50;}
     }
      ajax.open("post","ajaxobj.php?text=laile",true); 
      var yunstr=document.getElementById("shr").innerHTML;
      ajax.onreadystatechange=ready;
      yunstr=yunstr.replace(/&lt;/g,"<");
      yunstr=yunstr.replace(/&gt;/g,">");
      post="te="+yunstr;  ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
      ajax.send(post);
      document.getElementById("shr").innerHTML="";
     }
      
     function f5(){
      var xhr2 = cajax(); 
     function ready1(){
     if( xhr2.readyState==4)
     document.getElementById("xsh").value=xhr2.responseText;
     document.getElementById("xsh").scrollTop=document.getElementById("xsh").scrollTop+500;
     }
     xhr2.open("post","ajaxobj.php?get2=f5",true); 
     xhr2.onreadystatechange=ready1;
     xhr2.send(null);
     } function ms(){
     if(document.getElementById("ck0").checked){
     if(  window.event.keyCode==13){
     document.getElementById("13").click();
     return false;
     }}
     else{
     if(event.ctrlKey && window.event.keyCode==13){
     document.getElementById("13").click();
     return false;
     }}
     
     }
    setInterval ("f5()",1000);
      

  11.   

    一般还是用刷新方法的,B/S模式下的 server 端根本没有办法主动推送。上面说的comet我第一次听说,感觉不错,但是对于一些虚拟主机限制IIS连接的就不适用了,而且每个人占用一个连接,长期不释放,不知道会不会占用系统资源
      

  12.   

    客户端用flash socket 服务端 java socket or c# socket 这样是比较简单的
      

  13.   

    24楼给我个简单的例子吧 我看看 我刚下了个稍微复杂点的例子  关键是他用了prototype.js  我不了解。。
      

  14.   

    index.html 记得加载JQUERY.JS<script src="jquery.js"></script>
    <script type="text/javascript">
    <!--
        window.onload = function() {
            getMsg(0);
        }
        function getMsg(time) {
            $.post("back.php", {'timestamp': time ,"num":Math.random()}, function(data) {
                var json = eval('('+ data +')');
                document.getElementById("txt").innerHTML += json.msg+'<br>';
                getMsg(json.timestamp);
            });
        }    function send() {
            var v = document.getElementById('msg').value;  
            $('#msg').val('');
            $.post("back.php", {'msg': v ,"num":Math.random()}, function(data) {
               
            });
        }
    //-->
    </script>
    <div id="txt" ></div>
    <input type="text" id="msg"><input type="button" value="Send" onclick="send()">back.php
    <?phpset_time_limit(0);
    ob_end_clean();$file = dirname(__FILE__). '/data.txt';if(!empty($_REQUEST['msg'])){
        file_put_contents($file, $_REQUEST['msg']);
        die('Write');
    }$lastmodif    = isset($_REQUEST['timestamp']) ? intval($_REQUEST['timestamp']) : 0;
    $currentmodif = filemtime($file);while($currentmodif <= $lastmodif ){
      sleep(2);
      clearstatcache();
      $currentmodif = filemtime($file);
    }$response = array();
    $response['msg']       = file_get_contents($file);
    $response['timestamp'] = $currentmodif;
    $response['lasttime']  = $lastmodif;
    echo json_encode($response);
    flush();
    ?>另外新建data.txt文件