因為web運行模式為請求-響應,服務端無法主動發起通訊,所以通訊實時性存在各種問題,ajax輪詢可以模擬及時通訊,但連接太頻繁將給服務端帶來很大壓力,不頻繁則實時性很差。
下面介紹在web上真正實現實時通訊的方法,ajax長連接。(ajax長連接是瀏覽器兼容)
原理過程:進入頁面客戶端即發起一個ajax請求,服務端收到請求后不立即返回,將其阻塞,待服務端有新信息時將信息返回給客戶端,客戶端回調函數中收到信息后再次發起請求,服務端阻塞...以此反復。
缺點:受網絡環境影響,連接有意外斷開的可能性,實際應用時需考慮到這一點做相應容錯處理。
客戶端代碼:
<div id="time"> </div>
<script type="text/javascript" src="js/lib/jquery-1.7.2.min.js"></script>
<script type="text/javascript">
function langLink(){
$.ajax({
url: 'time.aspx',
success:function(res){
$('#time').html(res);
langLink();
}
});
}
langLink();
</script>
服務端代碼(C#.net):
System.Threading.Thread.Sleep(5000);
Response.Write(DateTime.Now.ToString());
Response.End();
注:此處為示意代碼,阻塞5秒后發送信息,實際應用中應一直阻塞線程,直至某個事件發生,產生新信息發送給客戶端
下面是我的公眾號,大家可以關注一下,可以一起學習,一起進步:
參考地址:http://blog.csdn.net/wzs_xyz/article/details/19625103