zoukankan      html  css  js  c++  java
  • 网页客服思路以及QQ截图粘贴到聊天框功能

    功能:

    1、客服需登录进入客服页面。用户无需登录,进入用户页面,直接获取sessionId作为id值。

    2、用户进入页面并且发送消息时,客服才会获取到该用户,并在左侧列表显示。

    3、点击用户名即可切换聊天对象,正在聊天的用户,用户名为选中状态。

    4、每条消息的时间显示在本条消息上方(水平居中)。消息时间间隔不足1分钟,则此不显示时间。

    5、每次读取的消息均为最新消息。

    6、客服未与其正在聊天的用户发送新消息时应有新消息提示。

    7、用户关闭浏览器或长时间无回应时,将用户置为下线。

           客服界面将清空与下线用户的聊天窗口,且下线用户不显示在左侧列表中。

    8、用户长时间无回应置为下线后,刷新可继续在线与客服聊天。

    9、发送:1)输入框未输入消息时,提示“发送内容不能为空”。

                    2)未选择用户时,提示“请选择用户”。

    数据库表:

    三张表:客服(user),用户(customer),聊天记录(cs_chat_record)。

    客服表主要字段:id,name,password,online,currentPeople;

    用户表主要字段:id,name,online,headImg;

    聊天记录表主要字段:id,userId,customerId,userContent,customerContent,time;

    主要思路:

    1、用户进入页面:查看当前用户有没有正在被客服人员接待

    ①正在被接待:设置用户为在线状态(因为刷新会有下线操作)。

    ②未被接待:获取所有在线客服每个人正在接待的用户人数,并给该用户分配一个当前接待人数少的客服。

                        修改此客服正在接待的人数,将用户添加到用户表中(设置为在线状态)。

                        将用户和客服均存到session中。

    2、客服进入页面:常规验证。

    4、用户和客服发送消息时,都先将信息保存到数据库。

    5、用户和客服界面,都是一秒刷新一次获取最新消息。

    6、客服页面:当前正在沟通的用户列表,每秒获取一次,将不在线的用户在列表清除。

    7、长时间无回复的用户置为下线,用到数据库定时器。

    8、用户关闭浏览器置为下线,用到的是window.onbeforeunload方法。

    9、新消息提醒:保存用户消息将用户头像设置成有红点的,获取消息时将用户头像设置为无红点的。

    QQ截图在网页聊天中不能直接粘贴,要实现像QQ微信一样能直接粘贴成图片需要做一些操作
    利用paste事件捕获粘贴事件,clipboardData获取剪切板中的内容将文件用filereader接口读取出来

    function paseImg()
      {
        var imgReader = function (item) {
            var blob = item.getAsFile(),
                reader = new FileReader();
    
            reader.onloadend = function (e) {
    
                //显示图像
                var msg = "<img src='"+e.target.result+"' style='max-60%;max-height:250px;'/>";
                $('#textarea').append(msg);
            };
    
            reader.readAsDataURL(blob);
        };
    
        document.getElementById("textarea").addEventListener("paste",function(e){
          var clipboardData = e.clipboardData,
            i = 0,
            items, item, types;
            if (clipboardData) {
              items = clipboardData.items;
    
              if (!items) {
                  return;
              }
    
              item = items[0];
              types = clipboardData.types || [];
    
              for (; i < types.length; i++) {
                  if (types[i] === 'Files') {
                      item = items[i];
                      break;
                  }
              }
    
              if (item && item.kind === 'file' && item.type.match(/^image//i)) {
                  imgReader(item);
              }
            }
        });
      }
      paseImg();
  • 相关阅读:
    Sony Z1 USB 调试
    消除“Unfortunately, System UI has stopped”的方法
    变动数据模拟cons
    string to integer
    single number
    罗马数字转为阿拉伯数字
    整数逆序
    回文数字
    回文字符串
    count and say
  • 原文地址:https://www.cnblogs.com/netlock/p/14173640.html
Copyright © 2011-2022 走看看