请选择 进入手机版 | 继续访问电脑版
开启辅助访问
 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

点击进入授权页面

只需一步,快速开始

[Discuz教程] discuzX2 群聊消息

回复:0 | 查看:715 | 看下我的 发表于 2018-1-17 00:01:17 |阅读模式 |复制链接
Discuz! 2.0 在短消息方面增加了一个群聊的功能,在这里介绍一下群聊刷新显示数据的过程

群聊的刷新可以在后台 全局 - 站点功能 - 其他 里面设置 群聊消息内容自动刷新间隔(秒)

从程序上我们可以看到 模板文件 ./template/default/home/space_pm.htm 文件输出了js



复制代码



复制代码
当用户发表群聊时,程序通过 ajaxpost 向home.php?mod=spacecp&ac=pm&op=send&pmid=$pmid&daterange=$daterange&handlekey=pmsend&pmsubmit=yes 地址提交表单

程序 ./source/include/spacecp/spacecp_pm.php 对post过来的数据进行处理入库后返回

home.php?mod=space&do=pm&subop=view&touid='.$touid 到 ajaxpost 中所指的 pmforum_return 对象中类似



复制代码
则 js 执行 succeedhandle_pmsend 将消息输出显示出来


自动获取短消息过程是当后台设置了消息刷新的时间 则模板会输出显示

  • refreshHandle = window.setInterval('refreshMsg(0);', 2000);

复制代码
即表示 群聊页会每 2 秒 执行一次 refreshMsg 函数

refreshMsg 函数 每次会在 群聊界面上显示 autorefresh 秒后刷新, autorefresh 该值最开始由后台所设置的刷新时间赋值

之后 每次递减2

当 autorefresh 值 减到0 时refreshMsg 执行 ajax 向home.php?mod=spacecp&ac=pm&op=showchatmsg&inajax=1&daterange=$daterange&plid=$plid 请求

该地址包含的程序 ./source/include/spacecp/spacecp_pm.php 向 uc 接口取出最新的消息返回到函数

  • function(s){
  • msgListObj.innerHTML = s;
  • msgListObj.scrollTop = msgListObj.scrollHeight;
  • }

复制代码
输出显示

同样用户可以点击 界面上的 autorefresh 秒后刷新 字样的进行手动刷新获得最新的群聊消息
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则

快速回复 返回列表 客服中心





企业站定制,我们更专业!

联系我们
快速回复 返回顶部 返回列表