zoukankan      html  css  js  c++  java
  • php客服聊天回话系统,长连接加ajax轮询实现

    客服回话系统有三种实现方法:
    1、用ajax每隔几秒钟请求一次服务器,看看有没得消息,有消失就返回来显示给用户。
    2、长连接:建立一次连接之后就不断开,php set_time_out(0) 用ob_flush flush等函数强制推送给客户端
    3、长连接加轮询,建立一个长连接,没有数据就一直连着,当有数据的时候,就返回数据,并结束当前的连接,客户端接受数据并显示,然后再连接服务器端,又开始长连接,就这样周而复始,这就是长轮询。

    今天,我们就用第三种方法来实现php客服聊天系统。
    只写我的思路:
    -----------------------------------

    客户php:
    while(true){
       //一个死循环
       //查看是否有客服发送过来的数据
       //1、如果没有,那么继续while
       //2、如果有那返回数据,并结束程序
       if(有){
           echo 数据;
           exit;
        }
        sleep(5);
    }
    -----------------------------------
    客户: 客户端
    window.onload = function(){
       var setting = {
           type:"post",
           url:'kehu.php',
           dataType:'json',
           success:function(){
               //把内容显示给用户
               // 休眠3秒钟,再开始连接
               setTimeout(function(){$.ajax(setting);},3000);
           }
       };
       $.ajax(setting);
    }


    2、长连接

    <?php
    ob_start();
    
    echo str_repeat(' ',4000);
    ob_flush();
    flush();
    
    $i = 0;
    while(true){
       echo $i,'<br>';
       ob_flush();
       flush();
       sleep(3);
    }
  • 相关阅读:
    洛谷 P1653 猴子 解题报告
    洛谷 P2024 [NOI2001]食物链 解题报告
    洛谷 P1966 火柴排队 解题报告
    洛谷 P1311 选择客栈 解题报告
    洛谷 P3959 宝藏 解题报告
    二进制枚举子集技巧
    洛谷 P1841 [JSOI2007]重要的城市 解题报告
    洛谷 P2324 [SCOI2005]骑士精神 解题报告
    vector-size
    ubuntu 更换软件源
  • 原文地址:https://www.cnblogs.com/godrain/p/4401587.html
Copyright © 2011-2022 走看看