• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
车车大人
博客园    首页    新随笔    联系   管理     

http协议+MYSQL实现聊天

反向ajax:指的是服务器主动向客户端推送数据信息

 

通过长连接+ob缓存+ajax轮询实现

 表数据sql

 

 接下来 我们先通过一段代码来理解一下原理:

//反向ajax原理(ob缓存+http长连接)
    ob_start();
    echo str_repeat('', 4096)
    ob_end_flush();
    ob_flush();

    $i = 1;
    while(true){
        echo $i++;
        ob_flush();
        flush();
        sleep(1);//每秒发送一次数据
    }

 

 

那么实际上的php页面应该怎么写呢?看下面的写法:

//反向ajax原理(ob缓存+http长连接)
    $link = mysql_connect('localhost','root','root');
    mysql_query("set names utf8",$link);
    mysql_select_db("数据库名称");
    ob_start();
    echo str_repeat('', 4096)
    ob_end_flush();
    ob_flush();

    //实时查询是否有用户向客服发送消息
    while(true){
        $sql = "SELECT * FROM chat_log WHERE rec = 'admin' AND is_new = '1' ORDER BY log_id DESC limit 1";
        $res = mysql_query($sql,$link);
        if($row = mysql_fetch_assoc($res)){
            $sql = "UPDATE chat_log SET is_new = '0' WHERE log_id = ".$row['log_id'];
            mysql_query($sql,$link);
            echo "<script>parent.showMsg(".json_encode($row).")</script>";
            ob_flush();
            flush();
            sleep(1);
        }

 

 

剩下的html页面完全可以自己构思,主要是通过js的方法showMsg来统一实现就可以了,用到的函数有:

append向某个地方插入语句

回车换行用\r\n

eval 处理json数据

-----------------------------------------------------

注意在php页面将收到的内容转一下形式:

htmlspecialchars($_POST['content'],ENT_QUOTES);

通往牛逼的路上,在意的只有远方!
posted @ 2017-10-13 20:06  车车大人  阅读(1450)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3