輪詢 長輪詢

2022-06-11 09:51:06 字數 2492 閱讀 4658

輪詢:通過setinterval向後台請求資料,更新html

from flask import

flask,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

">

user_list.html

長輪詢:基於時間迴圈和佇列的請求等待,實現資料的實時更新

from flask import

flask,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-cn

">

user_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...