在线聊天系统文件(音视频、文档)以及表情的实时发送

您所在的位置:网站首页 蝙蝠聊天如何发送文件 在线聊天系统文件(音视频、文档)以及表情的实时发送

在线聊天系统文件(音视频、文档)以及表情的实时发送

2024-02-21 00:10| 来源: 网络整理| 查看: 265

在线聊天系统的文件(音视频、文档)以及表情的实时发送:

 

已经实现了以下功能:

现在主要对QQ聊天表情的发送,以及音视频文档文件的发送实现做个做个总结记录:

PS(为方便演示 我在此在浏览器A登录a用户,在浏览器B登录b用户,然后a与b相互进行消息发送!!)

 

一:QQ聊天表情发送的实现:

先展示几张效果图:

 

 

 

实现过程:

首先引入:

 

 在这我用可编辑的div替代了textarea的输入框,因为textarea框内的内容不支持html的页面解析contenteditable="true" 这个属性是为了这个div可以编辑,并且输入内容。

发送(S)

然后添加js:

$(function() {

       $("#text").emoji({

               button: "#emoji",

               showTab: true,

               animation: 'slide',

               icons: [{

                   name: "QQ表情",

                   path: "/static/dist/img/qq/",

                   maxNum: 91,

                   excludeNums: [41, 45, 54],

                   file: ".gif",

                   placeholder: "#qq_{alias}#"

               }],

           });

})

 

点击触发send()发送事件后,把文本框的内容添加到消息框后,调用以下方法进行解析:

function emparse(){

    $(".panel").emojiParse({//这个panel是文本框内包含消息的class

      icons: [{

                path: "/static/dist/img/qq/",

                file: ".gif",

                placeholder: "#qq_{alias}#"

            }]

        });

}

当然还需要在客户端接收到消息后还需要再调一次empares()这个方法解析表情。

 

API    

icons

表情组。icons group.

icons:{ name }

该组表情名称。the name of the icons group.

icons:{ path }

必填。该组表情路径(表情文件必须是1,2,3...命名)。required.the path of the icons group(icon file must named as 1 ,2 ,3...).

icons:{ maxNum }

必填。该组表情文件名的最大数。required.the max number of the icons group file name.

icons:{ excludeNums }

要排除的表情文件集合。the exclude icon files.

icons:{ file }

表情文件的后缀名。the icon file extension.

icons:{ placeholder }

该组表情插入文本框后的占位标识,必须包含'{alias}'部分,'{alias}'会被自动替换成每个表情的标识。the placeholder for the icon group, must contains '{alias}' in it, it will be replaced with the code of each emoji.

icons:{ alias }

每个表情对应的标识,若未指定,则为表情文件名(1,2,3...),若指定为一个对象,

则会根据对象属性名(1,2,3...)查找属性的值作为表情标识。

icons:{ title }

每个表情指上去显示的文字,格式:fileName:title, 如:1:'good'。the shows title for each emoji, format: fileName:title, such as: 1:'good'.

 

二:音视频文档文件的实时发送:

效果图:文档发送

 

视频发送:可以全屏播放

 

 

音频发送:

 

 

图片发送:

网上的实现过程大多是把要发送的文件,进行在线压缩,然后发送,或者对一些较大的文件进行分段发送。

以上实现方式感觉有点麻烦,说说我的实现思路:

1. 点击选择文件后,先把文件进行上传,存储在数据库并返回存储路径,然后点击发送的时候只进行路径的传送,这样既可避免连接断开,传送失败!

(备注:对于图片我直接转成base64进行传送了,下载的时候用的返回的url路径)

 

点击上传附件直接调用上面截图这个方法就可以了!

    

    

 

 

      //图片预览框

  

 

收到消息提醒:

直接用了layerUi 方便又好用:重写一下弹框的样式

 

 

*{margin:0;padding:0;}

#pop{background:#fff;width:260px;border:1px solid #e0e0e0;font-size:12px;position: fixed;right:10px;bottom:10px;}

#popHead{line-height:32px;background:#f6f0f3;border-bottom:1px solid #e0e0e0;position:relative;font-size:12px;padding:0 0 0 10px;}

#popHead h2{font-size:14px;color:#666;line-height:32px;height:32px;}

#popHead #popClose{position:absolute;right:10px;top:1px;}

#popHead a#popClose:hover{color:#f00;cursor:pointer;}

#popContent{padding:5px 10px;}

#popTitle a{line-height:24px;font-size:14px;font-family:'微软雅黑';color:#333;font-weight:bold;text-decoration:none;}

#popTitle a:hover{color:#f60;}

#popIntro{text-indent:24px;line-height:160%;margin:5px 0;color:#666;}

#popMore{text-align:right;border-top:1px dotted #ccc;line-height:24px;margin:8px 0 0 0;}

#popMore a{color:#f60;}

#popMore a:hover{color:#f00;}

//消息通知

function alertframe(name,content){

layer.open({

  type: 1,//注意这的type值等于1

  skin: 'layui-layer-demo', //样式类名

  closeBtn: 0, //不显示关闭按钮

  anim: 2,

  title: false,

  closeBtn: 0, //不显示关闭按钮

  shade: [0],

  area: ['340px', '215px'],

  offset: 'rb', //右下角弹出

  time: 5000, //2秒后自动关闭

  shadeClose: true, //开启遮罩关闭

  content: '温馨提示来自'+name+'得消息!'+content+'

查看 »

'

});

}

 

结语:撸了好多jQ算是实现功能了,代码确实写的有点乱了,还需要后续的优化,提出使用重复性较高的代码,降低耦合性,还需要很多地方需要改良。。。

 

附件:QQ表情js网盘地址:

链接:https://pan.baidu.com/s/1ruh2ydg1mufUi5QBtwbM0Q

提取码:3ztf



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3