iT邦幫忙

0

php ajax FB即時顯示資訊

各位大家好:

想請問像FB要po動態或按讚的同時,資料還未送出,在網頁沒有更新下,就可以顯示其他人的輸入資訊或馬上又新增幾個人按讚的即時更新資訊,想請問是用甚麼方法做到的?

請問是ajax嗎? 因為我之前用ajax是要輸入資訊,網頁在沒更新下,ajax送到後端,那要怎麼看別人在使用同一網頁並輸入後的資訊,再網頁不更新下,就可以看到即時資訊?

謝謝

浩瀚星空 iT邦研究生 4 級 ‧ 2018-10-31 14:10:02 檢舉
1.使用ajax,定時檢查更新的內容。
這有個缺點,網頁閒置過久很容易造成瀏覽器崩潰。
一般我會做個30分或1小時後就不在自動更新。防瀏覽器崩潰。

2.使用sock。可以自架或是使用線上現成的。
自架的話,要會架設sock相關的插件或物件。(很多就不一一說明了)
需要有一定基礎的知識才能這樣做

有很多線上現成的如websocket。也可以去研究看看。
這只要學會他的api應用就行了。

1 個回答

1
Homura
iT邦研究生 3 級 ‧ 2018-10-31 14:02:33
最佳解答

那應該是用了websocket
上班沒辦法確認
不過我確定連stackoverflow都有用websocket
php應該也有websocket的寫法
像是我這次參加鐵人賽的signalR就是.NET專用的websocket框架之一
偷偷宣傳一下

補充一下
星空大說的那方法叫做輪詢

還有一個方法叫做長輪詢(Long polling)會定期使用ajax的方式跟伺服器傳送小封包,讓伺服器得知你還在連線,這樣伺服器只要資料有更新就會傳資訊給你,但是這寫起來很耗資源,程式又很難寫

看更多先前的回應...收起先前的回應...
weiclin iT邦高手 4 級 ‧ 2018-10-31 23:13:40 檢舉

幫補充, Long polling 是連上 server 以後發現沒資料也不馬上斷開連線, 等到有資料時因為連線還在就可以馬上回應, 而不用等到下一次 client 來輪詢

Homura iT邦研究生 3 級 ‧ 2018-10-31 23:23:01 檢舉

weiclin
謝謝鴿子大補充/images/emoticon/emoticon06.gif

froce iT邦高手 1 級 ‧ 2018-11-01 08:39:36 檢舉

昨天故意放了一下看FB用啥,很意外的居然沒有WS連線。

Homura iT邦研究生 3 級 ‧ 2018-11-01 08:50:38 檢舉

froce
我睡前也有看一下
只看到聊天室的WS
那他留言那邊怎做到的/images/emoticon/emoticon16.gif

froce iT邦高手 1 級 ‧ 2018-11-01 09:08:46 檢舉

外星科技不要想太多,我們找簡單的實現就好。XD

淺水員 iT邦新手 5 級 ‧ 2018-11-02 13:25:07 檢舉

其實沒有很要求及時的話
一般的輪詢就可以達成目的了
(可能每5~10秒送一次)
有新資料或其他使用者輸入就用 DOM 操作插入元素
以FB留言那種場合來說
輪詢間隔的時間差使用者通常不知道

我要發表回答

立即登入回答