輪詢:通過setinterval向後台請求資料,更新html
from flask importuser_list.htmlflask,render_template,request,jsonify
)users =,
'2':, '3
':,}
'/user/list')
defuser_list():
import
time
return render_template('
user_list.html
',users=users)
'/vote
',methods=['
post'])
defvote():
uid = request.form.get('
uid'
) users[uid][
'count
'] += 1
return
"投票成功"'
/get/vote
',methods=['
get'
])def
get_vote():
return
jsonify(users)
if__name__ == '
__main__':
#"zh-cn
">
長輪詢:基於時間迴圈和佇列的請求等待,實現資料的實時更新
from flask importflask,render_template,request,jsonify,session
import
uuid
import
queue
)asdfasdfasd
'users =,
'2':, '3
':,}
queque_dict =
'/user/list')
defuser_list():
user_uuid =str(uuid.uuid4())
queque_dict[user_uuid] =queue.queue()
session[
'current_user_uuid
'] =user_uuid
return render_template('
user_list.html
',users=users)
'/vote
',methods=['
post'])
defvote():
uid = request.form.get('
uid'
) users[uid][
'count
'] += 1
for q in
queque_dict.values():
q.put(users)
return
"投票成功"'
/get/vote
',methods=['
get'
])def
get_vote():
user_uuid = session['
current_user_uuid']
q =queque_dict[user_uuid]
ret =
try:
users = q.get(timeout=5)
ret[
'data
'] =users
except
queue.empty:
ret[
'status
'] =false
return
jsonify(ret)
if__name__ == '
__main__':
192.168.13.253
',threaded=true)
#
"zh-cnuser_list.html">
from flask import
flask,render_template,request,jsonify
)import
queue
q =queue.queue()
'/get/vote')
defget_vote():
try:
val = q.get(timeout=20)
except
queue.empty:
val = "
已超時"
return
val'
/vote')
defvote():
q.put('10
')return
'投票成功'if
__name__ == '
__main__':
#
輪詢,長輪詢,Websocket
原理 利用ajax定時朝後端傳送請求,比如每隔五秒鐘發一次請求,那麼你的資料延遲就可能會高達五秒 特點 資料延遲,消耗資源過大,請求次數太多 原理 利用ajax 佇列 定時朝後端傳送請求,如果沒有資料則會阻塞但是不會一直阻塞,比如阻塞你30秒,還沒有資料則返回,然後讓客戶端瀏覽器再次傳送請求資料的請...
輪詢與長輪詢
資料互動有兩種模式 push 推模式 pull 拉模式 1 推模式指的是客戶端與服務端建立好網路長連線,服務方有相關資料,直接通過長連線通道推送到客戶端。1 優點 及時,一旦有資料變更,客戶端立馬能感知到 另外對客戶端來說邏輯簡單,不需要關心有無資料這些邏輯處理。2 缺點 不知道客戶端的資料消費能力...
長輪詢 短輪詢
長輪詢 客戶端向伺服器傳送ajax請求,伺服器接收到請求後hold住連線,直到有新訊息才返回響應資訊並關閉連線,客戶端處理完響應資訊後再向伺服器傳送新的請求。優點 在無訊息的情況下不會頻繁請求,消耗資源小。缺點 伺服器hold住連線會消耗資源,返回的資料順序無保證,難以管理維護。function a...