123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461 |
- <title>社交聊天</title>
- <div class="layui-card layadmin-header">
- <div class="layui-breadcrumb" lay-filter="breadcrumb">
- <a lay-href="">主页</a>
- <a><cite>高级</cite></a>
- <a><cite>通讯系统</cite></a>
- <a><cite>社交聊天</cite></a>
- </div>
- </div>
- <div class="layui-fluid">
- <div class="layui-row layui-col-space15">
- <div class="layui-col-md12">
- <div class="layui-card">
- <div class="layui-card-header">面板外的操作示例</div>
- <div class="layui-card-body">
-
- <div class="layui-btn-container LAY-senior-im-chat-demo">
- <button class="layui-btn" data-type="chat">自定义会话</button>
- <button class="layui-btn" data-type="message">接受好友的消息</button>
- <button class="layui-btn" data-type="messageAudio">接受音频消息</button>
- <button class="layui-btn" data-type="messageVideo">接受视频消息</button>
- <button class="layui-btn" data-type="messageTemp">接受临时会话消息</button>
-
- <br>
-
- <button class="layui-btn" data-type="add">申请好友</button>
- <button class="layui-btn" data-type="addqun">申请加群</button>
- <button class="layui-btn" data-type="addFriend">同意好友</button>
- <button class="layui-btn" data-type="addGroup">增加群组到主面板</button>
- <button class="layui-btn" data-type="removeFriend">删除主面板好友</button>
- <button class="layui-btn" data-type="removeGroup">删除主面板群组</button>
-
- <br>
- <button class="layui-btn" data-type="setGray">置灰离线好友</button>
- <button class="layui-btn" data-type="unGray">取消好友置灰</button>
-
- <button class="layui-btn" data-type="kefu1">在线客服一</button>
- <button class="layui-btn" data-type="kefu2">在线客服二</button>
-
- <button class="layui-btn" data-type="mobile">移动端版本</button>
- </div>
-
- </div>
- </div>
- </div>
- </div>
- </div>
- <script>
- layui.use(['admin', 'layim'], function(){
- var $ = layui.$
- ,admin = layui.admin
- ,element = layui.element
- ,router = layui.router();
-
- var layim = layui.layim;
-
- //演示自动回复
- var autoReplay = [
- '您好,我现在有事不在,一会再和您联系。',
- '你没发错吧?face[微笑] ',
- '洗澡中,请勿打扰,偷窥请购票,个体四十,团体八折,订票电话:一般人我不告诉他!face[哈哈] ',
- '你好,我是主人的美女秘书,有什么事就跟我说吧,等他回来我会转告他的。face[心] face[心] face[心] ',
- 'face[威武] face[威武] face[威武] face[威武] ',
- '<(@ ̄︶ ̄@)>',
- '你要和我说话?你真的要和我说话?你确定自己想说吗?你一定非说不可吗?那你说吧,这是自动回复。',
- 'face[黑线] 你慢慢说,别急……',
- '(*^__^*) face[嘻嘻] ,是贤心吗?'
- ];
-
- //基础配置
- layim.config({
- //初始化接口
- init: {
- url: './json/layim/getList.js'
- ,data: {}
- }
- //查看群员接口
- ,members: {
- url: './json/layim/getMembers.js'
- ,data: {}
- }
-
- ,uploadImage: {
- url: '' //(返回的数据格式见下文)
- ,type: '' //默认post
- }
- ,uploadFile: {
- url: '' //(返回的数据格式见下文)
- ,type: '' //默认post
- }
-
- ,isAudio: true //开启聊天工具栏音频
- ,isVideo: true //开启聊天工具栏视频
-
- //扩展工具栏
- ,tool: [{
- alias: 'code'
- ,title: '代码'
- ,icon: ''
- }]
-
- //,brief: true //是否简约模式(若开启则不显示主面板)
-
- //,title: 'WebIM' //自定义主面板最小化时的标题
- //,right: '100px' //主面板相对浏览器右侧距离
- //,minRight: '90px' //聊天面板最小化时相对浏览器右侧距离
- ,initSkin: '3.jpg' //1-5 设置初始背景
- //,skin: ['aaa.jpg'] //新增皮肤
- //,isfriend: false //是否开启好友
- //,isgroup: false //是否开启群组
- //,min: true //是否始终最小化主面板,默认false
- //,notice: true //是否开启桌面消息提醒,默认false
- //,voice: false //声音提醒,默认开启,声音文件为:default.mp3
-
- ,msgbox: '/layim/demo/msgbox.html' //消息盒子页面地址,若不开启,剔除该项即可
- ,find: '/layim/demo/find.html' //发现页面地址,若不开启,剔除该项即可
- ,chatLog: '/layim/demo/chatlog.html' //聊天记录页面地址,若不开启,剔除该项即可
-
- });
- //监听在线状态的切换事件
- layim.on('online', function(status){
- layer.msg(status);
- });
-
- //监听签名修改
- layim.on('sign', function(value){
- layer.msg(value);
- });
- //监听自定义工具栏点击,以添加代码为例
- layim.on('tool(code)', function(insert){
- layer.prompt({
- title: '插入代码 - 工具栏扩展示例'
- ,formType: 2
- ,shade: 0
- }, function(text, index){
- layer.close(index);
- insert('[pre class=layui-code]' + text + '[/pre]'); //将内容插入到编辑器
- });
- });
-
- //监听layim建立就绪
- layim.on('ready', function(res){
- //console.log(res.mine);
- layim.msgbox(5); //模拟消息盒子有新消息,实际使用时,一般是动态获得
- });
- //监听发送消息
- layim.on('sendMessage', function(data){
- var To = data.to;
- //console.log(data);
-
- if(To.type === 'friend'){
- layim.setChatStatus('<span style="color:#FF5722;">对方正在输入。。。</span>');
- }
-
- //演示自动回复
- setTimeout(function(){
- var obj = {};
- if(To.type === 'group'){
- obj = {
- username: '模拟群员'+(Math.random()*100|0)
- ,avatar: layui.cache.dir + 'images/face/'+ (Math.random()*72|0) + '.gif'
- ,id: To.id
- ,type: To.type
- ,content: autoReplay[Math.random()*9|0]
- }
- } else {
- obj = {
- username: To.name
- ,avatar: To.avatar
- ,id: To.id
- ,type: To.type
- ,content: autoReplay[Math.random()*9|0]
- }
- layim.setChatStatus('<span style="color:#FF5722;">在线</span>');
- }
- layim.getMessage(obj);
- }, 1000);
- });
- //监听查看群员
- layim.on('members', function(data){
- //console.log(data);
- });
-
- //监听聊天窗口的切换
- layim.on('chatChange', function(res){
- var type = res.data.type;
- console.log(res.data.id)
- if(type === 'friend'){
- //模拟标注好友状态
- //layim.setChatStatus('<span style="color:#FF5722;">在线</span>');
- } else if(type === 'group'){
- //模拟系统消息
- layim.getMessage({
- system: true
- ,id: res.data.id
- ,type: "group"
- ,content: '模拟群员'+(Math.random()*100|0) + '加入群聊'
- });
- }
- });
-
-
- //面板外的操作
- var $ = layui.jquery, active = {
- chat: function(){
- //自定义会话
- layim.chat({
- name: '小闲'
- ,type: 'friend'
- ,avatar: '//tva3.sinaimg.cn/crop.0.0.180.180.180/7f5f6861jw1e8qgp5bmzyj2050050aa8.jpg'
- ,id: 1008612
- });
- layer.msg('也就是说,此人可以不在好友面板里');
- }
- ,message: function(){
- //制造好友消息
- layim.getMessage({
- username: "贤心"
- ,avatar: "//tp1.sinaimg.cn/1571889140/180/40030060651/1"
- ,id: "100001"
- ,type: "friend"
- ,content: "嗨,你好!欢迎体验LayIM。演示标记:"+ new Date().getTime()
- ,timestamp: new Date().getTime()
- });
- }
- ,messageAudio: function(){
- //接受音频消息
- layim.getMessage({
- username: "林心如"
- ,avatar: "//tp3.sinaimg.cn/1223762662/180/5741707953/0"
- ,id: "76543"
- ,type: "friend"
- ,content: "audio[http://gddx.sc.chinaz.com/Files/DownLoad/sound1/201510/6473.mp3]"
- ,timestamp: new Date().getTime()
- });
- }
- ,messageVideo: function(){
- //接受视频消息
- layim.getMessage({
- username: "林心如"
- ,avatar: "//tp3.sinaimg.cn/1223762662/180/5741707953/0"
- ,id: "76543"
- ,type: "friend"
- ,content: "video[http://www.w3school.com.cn//i/movie.ogg]"
- ,timestamp: new Date().getTime()
- });
- }
- ,messageTemp: function(){
- //接受临时会话消息
- layim.getMessage({
- username: "小酱"
- ,avatar: "//tva1.sinaimg.cn/crop.7.0.736.736.50/bd986d61jw8f5x8bqtp00j20ku0kgabx.jpg"
- ,id: "198909151014"
- ,type: "friend"
- ,content: "临时:"+ new Date().getTime()
- });
- }
- ,add: function(){
- //实际使用时数据由动态获得
- layim.add({
- type: 'friend'
- ,username: '麻花疼'
- ,avatar: '//tva1.sinaimg.cn/crop.0.0.720.720.180/005JKVuPjw8ers4osyzhaj30k00k075e.jpg'
- ,submit: function(group, remark, index){
- layer.msg('好友申请已发送,请等待对方确认', {
- icon: 1
- ,shade: 0.5
- }, function(){
- layer.close(index);
- });
-
- //通知对方
- /*
- $.post('/im-applyFriend/', {
- uid: info.uid
- ,from_group: group
- ,remark: remark
- }, function(res){
- if(res.status != 0){
- return layer.msg(res.msg);
- }
- layer.msg('好友申请已发送,请等待对方确认', {
- icon: 1
- ,shade: 0.5
- }, function(){
- layer.close(index);
- });
- });
- */
- }
- });
- }
- ,addqun: function(){
- layim.add({
- type: 'group'
- ,username: 'LayIM会员群'
- ,avatar: '//tva2.sinaimg.cn/crop.0.0.180.180.50/6ddfa27bjw1e8qgp5bmzyj2050050aa8.jpg'
- ,submit: function(group, remark, index){
- layer.msg('申请已发送,请等待管理员确认', {
- icon: 1
- ,shade: 0.5
- }, function(){
- layer.close(index);
- });
-
- //通知对方
- /*
- $.post('/im-applyGroup/', {
- uid: info.uid
- ,from_group: group
- ,remark: remark
- }, function(res){
-
- });
- */
- }
- });
- }
- ,addFriend: function(){
- var user = {
- type: 'friend'
- ,id: 1234560
- ,username: '李彦宏' //好友昵称,若申请加群,参数为:groupname
- ,avatar: '//tva4.sinaimg.cn/crop.0.0.996.996.180/8b2b4e23jw8f14vkwwrmjj20ro0rpjsq.jpg' //头像
- ,sign: '全球最大的中文搜索引擎'
- }
- layim.setFriendGroup({
- type: user.type
- ,username: user.username
- ,avatar: user.avatar
- ,group: layim.cache().friend //获取好友列表数据
- ,submit: function(group, index){
- //一般在此执行Ajax和WS,以通知对方已经同意申请
- //……
-
- //同意后,将好友追加到主面板
- layim.addList({
- type: user.type
- ,username: user.username
- ,avatar: user.avatar
- ,groupid: group //所在的分组id
- ,id: user.id //好友ID
- ,sign: user.sign //好友签名
- });
-
- layer.close(index);
- }
- });
- }
- ,addGroup: function(){
- layer.msg('已成功把[Angular开发]添加到群组里', {
- icon: 1
- });
- //增加一个群组
- layim.addList({
- type: 'group'
- ,avatar: "//tva3.sinaimg.cn/crop.64.106.361.361.50/7181dbb3jw8evfbtem8edj20ci0dpq3a.jpg"
- ,groupname: 'Angular开发'
- ,id: "12333333"
- ,members: 0
- });
- }
- ,removeFriend: function(){
- layer.msg('已成功删除[凤姐]', {
- icon: 1
- });
- //删除一个好友
- layim.removeList({
- id: 121286
- ,type: 'friend'
- });
- }
- ,removeGroup: function(){
- layer.msg('已成功删除[前端群]', {
- icon: 1
- });
- //删除一个群组
- layim.removeList({
- id: 101
- ,type: 'group'
- });
- }
- //置灰离线好友
- ,setGray: function(){
- layim.setFriendStatus(168168, 'offline');
-
- layer.msg('已成功将好友[马小云]置灰', {
- icon: 1
- });
- }
- //取消好友置灰
- ,unGray: function(){
- layim.setFriendStatus(168168, 'online');
-
- layer.msg('成功取消好友[马小云]置灰状态', {
- icon: 1
- });
- }
-
- ,kefu1: function(){
- layim.chat({
- name: '在线客服一' //名称
- ,type: 'kefu' //聊天类型
- ,avatar: '//tp1.sinaimg.cn/5619439268/180/40030060651/1' //头像
- ,id: 1111111 //定义唯一的id方便你处理信息
- })
- }
- ,kefu2: function(){
- layim.chat({
- name: '在线客服二' //名称
- ,type: 'kefu' //聊天类型
- ,avatar: '//tp1.sinaimg.cn/5619439268/180/40030060651/1' //头像
- ,id: 2222222 //定义唯一的id方便你处理信息
- });
- }
-
- //移动端版本
- ,mobile: function(){
- var device = layui.device();
- var mobileHome = '/layim/demo/mobile.html';
- if(device.android || device.ios){
- return location.href = mobileHome;
- }
- var index = layer.open({
- type: 2
- ,title: '移动版演示 (或手机扫右侧二维码预览)'
- ,content: mobileHome
- ,area: ['375px', '667px']
- ,shadeClose: true
- ,shade: 0.8
- ,end: function(){
- layer.close(index + 2);
- }
- });
- layer.photos({
- photos: {
- "data": [{
- "src": "http://cdn.layui.com/upload/2016_12/168_1481056358469_50288.png",
- }]
- }
- ,anim: 0
- ,shade: false
- ,success: function(layero){
- layero.css('margin-left', '350px');
- }
- });
- }
- };
- $('.LAY-senior-im-chat-demo .layui-btn').on('click', function(){
- var type = $(this).data('type');
- active[type] ? active[type].call(this) : '';
- });
-
- });
- </script>
|