所以我目前正在將 socket.io 用于加載螢屏,但它無法正常作業,所以我將嘗試不同的解決方案。我需要執行以下操作:用戶打開我的應用程式——這會觸發服務器端的一個功能(CPU 密集型抓取功能,大約需要 8 秒)。功能完成后,我需要通知客戶端該功能已完成并且客戶端獲取結果(獲取此結果后,應用程式加載螢屏關閉,用戶進入應用程式)。
我當前的實作是使用 socket.io 排放并通過后臺執行緒上的 Redis 佇列處理抓取功能。
是否有不同的方法來執行此操作而不是套接字連接并從客戶端發送排放 - > 服務器,反之亦然?
我認為我不能只接受經典的 GET 請求,因為在等待回應的同時讓長時間運行(8 秒)的請求打開這么長時間不是不好的做法嗎?另外,我查看了 Server-Sent Events,但我不確定在這種情況下我是否能夠使用它。
任何見解都非常感謝!
uj5u.com熱心網友回復:
對于來自“健康”服務器的回應來說,8 秒比正常時間長,但仍然應該沒問題。我只是使用來自移動客戶端的 GET,并將其撰寫為在等待時不阻塞 UI。
撰寫您的 UI,以便它通知用戶它正在等待回應,甚至可以讓用戶了解回應可能需要多長時間。
uj5u.com熱心網友回復:
要記住的幾點。
- nodejs 通常可以做很多并發的 web-scraping:大多數 web-scraping 所用的時間都花在等待被抓取的服務器回應上。nodejs 是異步的。所以作業執行緒可能沒有多大幫助。它們肯定會使您的服務器應用程式更加復雜。擴展它的一個不錯的選擇可能是集群你的 nodejs 應用程式。
- 除了損害用戶體驗之外,撰寫服務器以停止對 GET 請求的回應沒有任何害處。如果您的用戶在這幾秒鐘內有一些合理的東西可以查看,您可能可以擺脫這種情況。
- 如果您的用戶在那個停頓期間正在查看網頁,您可以使用xhr或從頁面中的 Javascript 代碼中提取來檢索該資料,同時您可以使用微調器或一些此類用戶界面內容來娛樂他們。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/359216.html
標籤:javascript 节点.js 迅速 Redis 长时间运行的进程
上一篇:Swift-正則運算式從字串中洗掉“\\text{and_whatever_is_here}”
下一篇:按鈕影像上的中心標題
