首页 php教程 php手册 PHP+ajax聊天室源码!支持长轮循跟定时请求两种

PHP+ajax聊天室源码!支持长轮循跟定时请求两种

Jun 13, 2016 am 10:17 AM
php+ajax s 定时 支持 源码 聊天室 请求


 

 

 

 

<span   1</span> <span var</span> lastID = "1";<span //</span><span 声明上次取回的消息的ID</span>
<span   2</span> <span var</span> isposted = <span false</span><span ;
</span><span   3</span> <span var</span> mGetTime;<span //</span><span 设置setTimeout的返回值
</span><span   4</span> <span // 通过封装getAjax()方法创建XMLHTTPRequest对象</span>
<span   5</span>  <span function</span> <span trim</span>(str){ <span //</span><span 删除左右两端的空格</span>
<span   6</span>  <span return</span> str.replace(/(^\s*)|(\s*$)/g, ""<span );
</span><span   7</span> <span }
</span><span   8</span> 
<span   9</span> <span function</span><span  getPlainTxt() {
</span><span  10</span> <span var</span> str=UE.getEditor('myEditor').<span getContent()
</span><span  11</span> str=<span trim</span><span (str);
</span><span  12</span> $('#mess').<span html(str);
</span><span  13</span> <span }
</span><span  14</span> 
<span  15</span> <span function</span><span  setContentmess() {
</span><span  16</span> UE.getEditor('myEditor').setContent('', <span false</span><span );
</span><span  17</span> <span return</span><span ;
</span><span  18</span> <span }
</span><span  19</span> 
<span  20</span> <span //</span><span 获取JSURL后面的参数</span>
<span  21</span> <span function</span> _getArgs(name,<span _number){
</span><span  22</span> <span var</span> jsFileName =<span  name;
</span><span  23</span> <span var</span> rName = <span new</span> RegExp(jsFileName+"(\\?(.*))?$"<span )
</span><span  24</span> <span var</span> jss=document.getElementsByTagName('script'<span );
</span><span  25</span> <span for</span> (<span var</span> i = 0;i < jss.length; i++<span ){
</span><span  26</span>   <span var</span> j =<span  jss[i];
</span><span  27</span>   <span if</span> (j.src&&j.src.<span match(rName)){
</span><span  28</span>     <span var</span> oo = j.src.match(rName)[2<span ];
</span><span  29</span>     <span if</span> (oo&&(t = oo.match(/([^&=]+)=([^=&]+)/<span g))){
</span><span  30</span>         <span for</span> (<span var</span> l = 0; l < t.length; l++<span ){
</span><span  31</span>             r =<span  t[l];
</span><span  32</span>             <span var</span> tt = r.match(/([^&=]+)=([^=&]+)/<span );
</span><span  33</span>             <span if</span><span  (tt)
</span><span  34</span>             <span return</span><span  tt[_number];
</span><span  35</span>                 <span //</span><span document.write('参数:' + tt[1] + ',参数值:' + tt[2] + '<br />');</span>
<span  36</span> <span         }
</span><span  37</span> <span     }
</span><span  38</span> <span   }
</span><span  39</span> <span }
</span><span  40</span> <span }
</span><span  41</span> 
<span  42</span> 
<span  43</span> <span function</span><span  user_to(){
</span><span  44</span> <span var</span> userid1=$('#userid1').<span val();
</span><span  45</span>     <span if</span>(userid1=='所有人'<span ){
</span><span  46</span> alert('请选择聊天对象哦!\n\n点击用户名称即可!'<span );
</span><span  47</span> $("#userid2").attr("checked",<span false</span><span );
</span><span  48</span> <span     }
</span><span  49</span> <span return</span> <span false</span><span ;
</span><span  50</span> <span }
</span><span  51</span> 
<span  52</span> 
<span  53</span> 
<span  54</span> 
<span  55</span> 
<span  56</span> <span //</span><span 点击选择用户</span>
<span  57</span> <span function</span><span  getFirend(name) {
</span><span  58</span>     <span var</span><span  new_name;
</span><span  59</span>     <span if</span>(name.length > 1 && name!="所有人"<span ) {
</span><span  60</span>         $("#userto").<span val(name);
</span><span  61</span>         $("#userid1").attr("checked",<span false</span><span );
</span><span  62</span>         $("#userid2").attr("checked",<span true</span><span );
</span><span  63</span> 
<span  64</span>         <span if</span>(name.length > 8<span ) {
</span><span  65</span>             new_name = name.<span substr</span>(0, 6<span );
</span><span  66</span>         } <span else</span><span  {
</span><span  67</span>             new_name =<span  name;
</span><span  68</span> <span         }
</span><span  69</span>         document.getElementById("tousertitle").innerHTML = "<font color=#ff6600 title=" + new_name + ">" + new_name + "</font>"<span ;
</span><span  70</span>     }<span else</span><span {
</span><span  71</span> 
<span  72</span>         $("#userto").val("所有人"<span );
</span><span  73</span> 
<span  74</span>         $("#userid1").attr("checked",<span true</span><span );
</span><span  75</span>         $("#userid2").attr("checked",<span false</span><span );
</span><span  76</span> 
<span  77</span> 
<span  78</span> 
<span  79</span>         document.getElementById("tousertitle").innerHTML = "用户"<span ;
</span><span  80</span> <span     }
</span><span  81</span> <span }
</span><span  82</span> 
<span  83</span> 
<span  84</span> 
<span  85</span> <span //</span><span 发送消息的方法</span>
<span  86</span> <span function</span><span  sendMess()
</span><span  87</span> <span {
</span><span  88</span> 
<span  89</span> <span    getPlainTxt();
</span><span  90</span>     <span //</span><span 如果消息为空给出提示并返回</span>
<span  91</span>     <span var</span> messvalue  =$("#mess").<span html();
</span><span  92</span>         messvalue=<span trim</span><span (messvalue);
</span><span  93</span> 
<span  94</span>         <span if</span>(messvalue.length>650<span ){
</span><span  95</span>         alert("参与互动提示:\n亲,输入的文字是不是有点多了?!,少说点吧!\n\n复制过来的文字!请先清除格式!"<span );
</span><span  96</span>         <span //</span><span document.getElementById("mess").focus();//把焦点设置到消息输入框</span>
<span  97</span>         <span return</span> <span false</span><span ;
</span><span  98</span> <span         }
</span><span  99</span> 
<span 100</span> 
<span 101</span> 
<span 102</span>         <span if</span>($("#mess").html().length<2<span ){
</span><span 103</span>         alert("参与互动提示:\n请填写您要发表的内容,长度必须2~250个字节!"<span );
</span><span 104</span>         <span //</span><span document.getElementById("mess").focus();//把焦点设置到消息输入框</span>
<span 105</span>         <span return</span> <span false</span><span ;
</span><span 106</span> <span         }
</span><span 107</span> 
<span 108</span>     <span var</span> d = <span new</span> <span Date</span><span ();
</span><span 109</span>         <span var</span> username = $("#username").<span val() ;
</span><span 110</span>         <span var</span> userto   = $("#userto").<span val() ;
</span><span 111</span>         <span var</span> userid   = $("#userid").<span val() ;
</span><span 112</span>         <span //</span><span var mess   = document.getElementById("mess").value ;</span>
<span 113</span>         <span var</span> mess     =<span  messvalue ;
</span><span 114</span>         <span var</span> userpid  = $("#userpid").<span val() ;
</span><span 115</span>         <span var</span> IP       = $("#IP").<span val() ;
</span><span 116</span>         <span var</span> usertype = $("#usertype").<span val() ;
</span><span 117</span> 
<span 118</span>         <span var</span> sendUrl = "username="+username+"&userto="+userto+"&userid="+userid+"&userpid="+userpid+"&mess="+mess +"&IP="+IP +"&usertype="+usertype+"&d="+d.<span getTime();
</span><span 119</span>         <span var</span> sendUrl =<span  encodeURI(sendUrl);
</span><span 120</span>       XMLHttp.sendReq('POST', 'send.php',sendUrl,<span  send_response);
</span><span 121</span> 
<span 122</span> 
<span 123</span> <span }
</span><span 124</span> 
<span 125</span> <span function</span><span  send_response(obj){
</span><span 126</span>     <span var</span> response = obj.<span responseText;
</span><span 127</span>     <span if</span>(response=='ok'<span ){
</span><span 128</span> <span if</span>(!<span isposted){
</span><span 129</span> isposted = <span true</span><span ;
</span><span 130</span> <span getMess();
</span><span 131</span> <span }
</span><span 132</span>       setContentmess();<span //</span><span 设置消息框为空</span>
<span 133</span> <span     }
</span><span 134</span>     <span if</span>(response=='false'<span ){
</span><span 135</span>       alert("发送失败!你的字符含有非法字"<span );
</span><span 136</span> <span getMess();
</span><span 137</span> <span     }
</span><span 138</span> <span }
</span><span 139</span> 
<span 140</span> <span function</span><span  getMess(){
</span><span 141</span> <span var</span> d = <span new</span> <span Date</span><span ();
</span><span 142</span> 
<span 143</span> <span var</span> getUrl = "getmess.php?lastid="+lastID +"&numbermess=80&d="+d.getTime();<span //</span><span 从服务器返回消息的地址</span>
<span 144</span>  $.<span ajax({
</span><span 145</span>                 type:"GET",
<span 146</span>                 dataType:"xml",
<span 147</span>                 url:getUrl,
<span 148</span>                 async: <span true</span>,
<span 149</span>                 timeout:80000,     <span //</span><span ajax请求超时时间80秒</span>
<span 150</span> 
<span 151</span>                 success:<span function</span>(data,<span textStatus){
</span><span 152</span>                     <span //</span><span 从服务器得到数据,显示数据并继续查询</span>
<span 153</span> isposted = <span false</span><span ;
</span><span 154</span> <span var</span> chatEL = $("#chat"<span );
</span><span 155</span> $(data).find("message").<span each</span>(<span function</span>(i,<span va){
</span><span 156</span> <span var</span>  sid      =$(this).find("sid").<span text();
</span><span 157</span> <span var</span>  succ     =$(this).find("succ").<span text();
</span><span 158</span> <span var</span>  umax     =$(this).find("umax").<span text();
</span><span 159</span> <span var</span>  user     =$(this).find("user").<span text();
</span><span 160</span> <span var</span>  userto   =$(this).find("userto").<span text();
</span><span 161</span> <span var</span>  userid   =$(this).find("userid").<span text();
</span><span 162</span> <span var</span>  usersex  =$(this).find("usersex").<span text();
</span><span 163</span> <span var</span>  usertype =$(this).find("usertype").<span text();
</span><span 164</span> <span var</span>  userpic  =$(this).find("userpic").<span text();
</span><span 165</span> <span var</span>  userpid  =$(this).find("userpid").<span text();
</span><span 166</span> <span var</span>  text     =$(this).find("text").<span text();
</span><span 167</span> <span var</span>  <span date</span>     =$(this).find("date").<span text();
</span><span 168</span> <span var</span>  uid          = _getArgs('function.js','2'<span )
</span><span 169</span>  <span //</span><span 有数据</span>
<span 170</span> 
<span 171</span>  <span if</span>(succ==1<span ){
</span><span 172</span>                 <span if</span>(uid>=98<span ){
</span><span 173</span>                 delhtml='<a href="#"  id="delmess" onclick=delmess("'+ sid +'","delmess");>[删除]</a><a href="#"  onclick=delmess("'+ userid +'","delusermess");  id="delusermess">[删除该用户的全部信息]</a>'<span ;
</span><span 174</span>                 }<span else</span><span {
</span><span 175</span>                 delhtml=''<span ;
</span><span 176</span> <span                 }
</span><span 177</span>                 <span if</span>(usertype>=98<span ){
</span><span 178</span>                 <span var</span> chatELinnerHTML = '<div class=chu><ul><li class=chu1><a href=http://www.0917cc.com?ID='+userid+' target=_blank><img  src='+userpic+' border=0    style="max-width:90%"PHP+ajax聊天室源码!支持长轮循跟定时请求两种" ></a></li><li class=chu2><a href=http://www.0917cc.com?ID='+userid+' target=_blank><img  src=/WebSystems/images/img/icons/gif/group.png / alt="PHP+ajax聊天室源码!支持长轮循跟定时请求两种" ></a> <a href=javascript:void(0) onclick=getFirend("'+ user +'"); ><font class=ChatFont3>管理员(' + user + ')</font></a> <img  src=/WebSystems/images/img/icons/gif/male.png / alt="PHP+ajax聊天室源码!支持长轮循跟定时请求两种" > <a href=javascript:void(0) onclick=getFirend("'+ userto +'");><font class=ChatFont3>' + userto + '</font></a> <font color=#575D69>说</font> <font color=#575D69>' + <span date</span> +'</font><img  src=/WebSystems/images/img/icons/gif/07.gif / alt="PHP+ajax聊天室源码!支持长轮循跟定时请求两种" >'+delhtml+'<br>' +text + '</li></ul></div>'<span ;
</span><span 179</span>                 chatEL.<span append(chatELinnerHTML);
</span><span 180</span>                 }<span else</span><span {
</span><span 181</span>                 <span var</span> chatELinnerHTML = '<div class=chu><ul><li class=chu1><a href="#" target=_blank><img  src='+userpic+' border=0    style="max-width:90%"PHP+ajax聊天室源码!支持长轮循跟定时请求两种" ></a></li><li class=chu2><a href=http://www.0917cc.com?ID='+userid+' target=_blank><img  src=/WebSystems/images/img/icons/gif/group.png / alt="PHP+ajax聊天室源码!支持长轮循跟定时请求两种" ></a> <a href=javascript:void(0) onclick=getFirend("'+ user +'"); ><font class=ChatFont1>(' + user + ')</font></a> <img  src=/WebSystems/images/img/icons/gif/male.png / alt="PHP+ajax聊天室源码!支持长轮循跟定时请求两种" > <a href=javascript:void(0) onclick=getFirend("'+ userto +'");><font class=ChatFont2>' + userto + '</font></a> <font color=#575D69>说</font> <font color=#575D69>' + <span date</span> +'</font>'+delhtml+'<br>' + text+ '</li></ul></div>'<span ;
</span><span 182</span>                 chatEL.<span append(chatELinnerHTML);
</span><span 183</span> <span                 }
</span><span 184</span>     lastID = umax;<span //</span><span 上次消息的ID</span>
<span 185</span>     chatEL.scrollTop(document.getElementById("chat").scrollHeight);<span //</span><span 滚动到最后一条消息</span>
<span 186</span>     <span if</span>(!<span isposted){
</span><span 187</span>     isposted = <span true</span><span ;
</span><span 188</span> <span     getMess();
</span><span 189</span> <span     }
</span><span 190</span> <span }
</span><span 191</span> 
<span 192</span> 
<span 193</span> 
<span 194</span> <span //</span><span 未从服务器得到数据,继续查询</span>
<span 195</span> <span if</span>(succ==0<span ){
</span><span 196</span> lastID = sid;<span //</span><span 上次消息的ID</span>
<span 197</span> chatEL.scrollTop = chatEL.scrollHeight;<span //</span><span 滚动到最后一条消息</span>
<span 198</span> <span if</span>(!<span isposted){
</span><span 199</span> isposted = <span true</span><span ;
</span><span 200</span> <span getMess();
</span><span 201</span> <span }
</span><span 202</span> <span }
</span><span 203</span> <span  });
</span><span 204</span> <span //</span><span each--end</span>
<span 205</span>              },
<span 206</span>              <span //</span><span -success-end
</span><span 207</span> <span              //Ajax请求超时,继续查询</span>
<span 208</span>              error:<span function</span>(XMLHttpRequest,textStatus,<span errorThrown){
</span><span 209</span>                      <span if</span>(textStatus=="timeout"<span ){
</span><span 210</span>                        $("#msg").show().html("您有好长时间没有发言了啊.").fadeOut(3200<span );
</span><span 211</span>                          <span if</span>(!<span isposted){
</span><span 212</span> isposted = <span true</span><span ;
</span><span 213</span> <span getMess();
</span><span 214</span> <span }
</span><span 215</span> <span                      }
</span><span 216</span> <span              }
</span><span 217</span> 
<span 218</span> <span             });
</span><span 219</span> 
<span 220</span> }
登录后复制

 

 

*本聊天系统采用PHP+AJAX+MYSQL开发而成!数据库支持mysql,支持XML,支持txt,支持accsess等数据库,可随意转换
聊天功能:1:表情2:超链接3:发送图片,4发送文件,5字体设置,6涂鸦功能
功能:可以对某个人说话,也可以对所有人说话,支持私聊(vip功能)
支持PHP长连接sleep实现的聊天室源码跟ajax实现的聊天室代码
作者:margin(qq:249189520----qq群:90316079-----账号1:admin密码:admin   账号2:demo 密码:demo

官方网站:http://www.0917cc.com

PHP+ajax聊天室模拟推送http://room.0917y.com/websystems/Chatroom2/

可以在火狐FF下查看连接进程跟下面的有什么不一样
PHP+ajax聊天室http://room.0917y.com/websystems/Chatroom/index.php?pid=25&ppid=64

*模拟推送是根据PHP长连接sleep实现的

不足跟缺点:
一直困惑了我一晚上都没有解决的问题是,在编辑器开头第一个插入空格的话!老是提示错误!好像跟XML规范有关系!
又好像是编辑器ueditor的问题取出来的空格会有c2a0会变成乱码,处理这种情况\u00a0不知道怎么处理
服务器的过滤不行!客户的过滤还不行!请求高手看下....

 

 

 

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何解决Windows Hello不支持的摄像头问题 如何解决Windows Hello不支持的摄像头问题 Jan 05, 2024 pm 05:38 PM

使用windowshello中,找不到支持的摄像头,常见的原因是使用的摄像头不支持人脸识别、摄像头驱动安装不正确导致的,那么接下来让我们一起去看一下怎么去设置。windowshello找不到支持的摄像头教程:原因一:摄像头驱动安装不对1、一般来说Win10系统可以自动为大部分摄像头安装驱动程序,如下,插上摄像头之后会有通知;2、这时我们打开设备管理器看看,摄像头驱动是否安装好,没有的话就需要手动操作一下。WIN+X,然后选择设备管理器;3、设备管理器窗口中,展开照相机选项,会显示摄像头的驱动型号

如何使用MySQL和Java实现一个简单的聊天室功能 如何使用MySQL和Java实现一个简单的聊天室功能 Sep 21, 2023 pm 05:13 PM

如何使用MySQL和Java实现一个简单的聊天室功能引言:在当今社交媒体的盛行下,人们越来越依赖于在线聊天来交流和分享信息。如何使用MySQL和Java实现一个简单的聊天室功能是一个非常有趣和实用的项目。本文将介绍如何使用MySQL和Java来实现这一功能,并提供具体的代码示例。一、搭建数据库首先,我们需要在MySQL中创建一个数据库来存储聊天室的相关信息。

PyCharm社区版支持的插件足够吗? PyCharm社区版支持的插件足够吗? Feb 20, 2024 pm 04:42 PM

PyCharm社区版支持的插件足够吗?需要具体代码示例随着Python语言在软件开发领域的应用越来越广泛,PyCharm作为一款专业的Python集成开发环境(IDE),备受开发者青睐。PyCharm分为专业版和社区版两个版本,其中社区版是免费提供的,但其插件支持相对专业版有所限制。那么问题来了,PyCharm社区版支持的插件足够吗?本文将通过具体的代码示例

华硕TUF Z790 Plus兼容华硕MCP79内存的频率 华硕TUF Z790 Plus兼容华硕MCP79内存的频率 Jan 03, 2024 pm 04:18 PM

华硕tufz790plus支持内存频率华硕TUFZ790-PLUS主板是一款高性能主板,支持双通道DDR4内存,最大支持64GB内存。它的内存频率非常强大,最高可达4800MHz。具体支持的内存频率包括2133MHz、2400MHz、2666MHz、2800MHz、3000MHz、3200MHz、3600MHz、3733MHz、3866MHz、4000MHz、4133MHz、4266MHz、4400MHz、4533MHz、4600MHz、4733MHz和4800MHz。无论是日常使用还是高性能需

优缺点分析:深入了解开源软件的利弊 优缺点分析:深入了解开源软件的利弊 Feb 23, 2024 pm 11:00 PM

开源软件的利与弊:了解开源项目的优劣势,需要具体代码示例在当今数字化时代,开源软件越来越受到关注和推崇。作为一种基于合作和分享精神的软件开发模式,开源软件在不同领域都有着广泛的应用。然而,尽管开源软件具有诸多优势,但也存在一些挑战和限制。本文将深入探讨开源软件的利与弊,并通过具体的代码示例展示开源项目的优劣势。一、开源软件的优势1.1开放性和透明性开源软件

教你如何设置Win11定时关机 教你如何设置Win11定时关机 Jan 06, 2024 pm 07:14 PM

有的时候,我们需要离开电脑一段时间让它持续下载或允许某些程序,想要在运行结束后关机,那么win11定时关机怎么设置呢,其实使用关机命令就可以了。win11定时关机怎么设置:1、首先右键左下角开始菜单,打开“运行”2、接着在其中输入“shutdown-s-t7200”并回车运行。(这里的7200就是定时关机的时间,单位为秒,7200就是2小时后关机)3、这样我们就能完成定时关机设置了。4、如果想要取消定时关机,只要输入“shutdown-a”并回车。5、确认后就可以取消定时关机了。

如何使用Go语言开发Websocket聊天室 如何使用Go语言开发Websocket聊天室 Dec 14, 2023 pm 01:46 PM

如何使用Go语言开发Websocket聊天室Websocket是一种实时通信协议,通过建立一次连接,可以在服务器和客户端之间进行双向通信。在开发聊天室时,Websocket是一个非常好的选择,因为它可以实现实时消息交流,并且能够提供高效的性能。本文将介绍如何使用Go语言开发一个简单的Websocket聊天室,并提供一些具体的代码示例。一、准备工作1.安装Go

抖音设置定时发送会影响流量吗?它设置定时关闭播放的教程是什么? 抖音设置定时发送会影响流量吗?它设置定时关闭播放的教程是什么? Mar 21, 2024 pm 04:51 PM

随着抖音的火爆,越来越多的用户和企业开始关注抖音营销。在运营过程中,有用户疑问,抖音设置定时发送会影响流量吗?本文将围绕这一问题展开讨论,并分享抖音设置定时关闭播放的教程。一、抖音设置定时发送会影响流量吗?抖音的定时发送功能允许用户在创建视频时选择在特定时间自动发布。关于此功能对流量的影响,目前官方尚未提供明确说明。根据实际运营经验和分析,可以得出定时发送功能对流量的影响可以被忽略。抖音流量的核心在于视频内容的质量和用户的互动,而非仅仅发布时间。精彩的内容和引人入胜的互动是吸引用户关注的关键。当

See all articles