日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php弹幕技术轮询,PHP+Ajax实现在线聊天长轮询

發布時間:2024/8/23 php 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php弹幕技术轮询,PHP+Ajax实现在线聊天长轮询 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

HTML

首先我們放置一個獲取數據按鈕和數據存放地方#msg。

jQuery

我們向ajax.php請求,請求的時間設置80秒。在這80秒中若沒有從服務端返回‘success’則一直保持連接狀態,直到有數據返回或‘success’的值為0才關閉連接。在關閉連接后在繼續下一次的請求。$(function()?{

$("#btn").bind("click",?{

btn:?$("#btn")

},

function(evdata)?{

$.ajax({

type:?"POST",

dataType:?"json",

url:?"ajax.php",

timeout:?80000,//ajax請求超時時間80秒

data:?{

time:?"80"

},

//40秒后無論結果服務器都返回數據

success:?function(data,?textStatus)?{

//從服務器得到數據,顯示數據并繼續查詢

if?(data.success?==?"1")?{

$("#msg").append("
[有數據]"?+?data.text);

evdata.data.btn.click();

}

//未從服務器得到數據,繼續查詢

if?(data.success?==?"0")?{

$("#msg").append("
[無數據]");

evdata.data.btn.click();

}

},

//Ajax請求超時,繼續查詢

error:?function(XMLHttpRequest,?textStatus,?errorThrown)?{

if?(textStatus?==?"timeout")?{

$("#msg").append("
[超時]");

evdata.data.btn.click();

}

}

});

});

Ajax.php

通過$_POST['time']來限制循環的超時時間,避免資源過度浪費。要注意的是瀏覽器不關閉的話,會一直請求下去......if(empty($_POST['time']))exit();

set_time_limit(0);//無限請求超時時間

$i=0;

while?(true){

//sleep(1);

usleep(500000);//0.5秒

$i++;

//若得到數據則馬上返回數據給客服端,并結束本次請求

$rand=rand(1,999);

if($rand<=15){

$arr=array('success'=>"1",'name'=>'xiaocai','text'=>$rand);

echo?json_encode($arr);

exit();

}

//服務器($_POST['time']*0.5)秒后告訴客服端無數據

if($i==$_POST['time']){

$arr=array('success'=>"0",'name'=>'xiaocai','text'=>$rand);

echo?json_encode($arr);

exit();

}

}

大家可以利用這種長輪詢(COMET)方式,做一個在線聊天系統,若是成功的話,你肯定會覺得小有成就呢!~

總結

以上是生活随笔為你收集整理的php弹幕技术轮询,PHP+Ajax实现在线聊天长轮询的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。