2013年7月28日 星期日

Long Polling 之 很殘念的到了最近才知道啊...

是說這是第一篇文耶!!! (還不是某人真的讓這成了蚊子館XD

雖然標題是Long Polling來著
不過其實不全然是呢XDD (遭毆

以下正文(?


雖然這技術有段時間了
不過說真的不久前才剛知道啊XDD

得知起因莫名簡單的(?
主要是因為tlk.io這服務而起的XD
是個簡單的聊天室服務
雖然功能簡單樸素 不過技術倒不怎簡單啊www

存粹某天閒閒沒事對著他開了GC的開發者工具
(用了GC得到了這工具之後的習慣XD)
然後發現...
等... 竟然有個始終pending的連線? 而且status code還是101 !?
好奇的看了下URL... ws:// 這啥? 見都沒見過
所以就順手Google了一下...

恩... HTML5的新協議之一 WebSocket
原來這一直希望能有的東西被加進來啦OWO
恩... GC從6開始就有在實作了 (正確來說是4開始 不過貌似6才稍微比較完整?)
等... 咱看到啥了
咱可是只差最初的1沒用的GC死忠用戶啊(正式版前的版本無視XD)
老早就支援了咱竟然都沒注意到!!!!!!!!?
不過各瀏覽器支援仍然不大相同
看來還不適合實際使用
不過就像剛才說到的
tlk.io倒是用上啦XDD
(自然有其他fallback啦 不支援的狀況應該還是long polling)

然後這是新技術
自然會有對應的舊技術啦~~~
總不可能在哪邊每秒reload或者AJAX request的啊XD
(這就是polling 雖然之前確實這樣想的... OTZ
找資料的同時也發現了
除了polling這種爛到爆的方法外
還有comet&long polling
comet雖然可行 但終究不理想
所以就出現了long polling

這方法倒是意外的簡單說www
主要在伺服器端
收到客戶端的連線後就先丟著 讓他進入pending狀態
等到有資料要送的時候在送出去
而瀏覽器收到後就結束連線處理資料
然後又一個新的request送出繼續等待

不過這會有霸著連線的問題
自然得要靠event driven的後端
不然用apache連線直接被吃滿滿還要服務嗎XDD

照慣例的簡單試了下~~~
longpolling.php
<?php
$time = rand(2, 5);
sleep($time);
echo json_encode($time);
?>
longpolling.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<head>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script>
    function pull() {
        $.getJSON("longpolling.php", function(result) {
            $("#pullresult").append("<p>waiting time : "+result + "</p>");
            setTimeout(pull, 100);
        });
    }
    $(document).ready(function() {
         pull();
    });
    </script>
</head>
<body>
<div id="pullresult">
</div>
</body>
</html>
結果~~~

(上面只是示範 如果真的拿來用的話Web Server會炸掉的XDD)


說實話
還真是沒想到現在使用的技術是如此的簡單啊XDD
果然好方法真的不一定是複雜的方法呢www
不過還是期望WebSocket能盡速普及啦
畢竟相較之下仍然是個比較好的方法XD

不過實際上也有SPDY這個方案呢www
總之看狀況啦~~~
反正寫網頁還是要看使用者啦
(望向那令種網頁設計師反感的IE 不過最近也好很多啦XD

1 則留言:

emASYepQRyQW 提到...

How a lot actual bonus value 바카라사이트 you get on a maximum bonus deposit. If you want to play on line casino for free, see our list with all NJ no deposit on line casino bonuses. If you wish to deposit between $10 and $100, see our list with all NJ on line casino bonuses.