我正在開發基於Pyramid和SQLAlchemy的Intranet Web應用程序。通知用戶瀏覽器的更改沒有websockets
最終可能(會)發生2個用戶將編輯相同的記錄。如何處理要求通知稍後開始編輯的用戶正在由第一個用戶編輯特定記錄的要求?
我正在開發基於Pyramid和SQLAlchemy的Intranet Web應用程序。通知用戶瀏覽器的更改沒有websockets
最終可能(會)發生2個用戶將編輯相同的記錄。如何處理要求通知稍後開始編輯的用戶正在由第一個用戶編輯特定記錄的要求?
研究使用服務器發送的事件(SSE)而不是websockets。金字塔本身可以迴應這樣的請求,而不會不斷消耗線程。除了IE之外,大多數瀏覽器都支持SSE,並且IE可能使用它來使其工作。
下面是實現上證所事件流的金字塔的看法:
https://github.com/Pylons/substanced/blob/master/substanced/audit/views.py#L49
您需要一個包含當前編輯器,record_id和超時值的表格。第一位編輯根據POST請求要求編輯一條記錄,並在此表中添加一行,並有合理的超時時間,例如5分鐘。第一位編輯得到一個「好」的回報。對於第二個編輯器,您在表格中找到record_id的匹配項,查看超時值,如果沒有超時,(s)他會得到一個「錯誤」以回覆發佈請求。在第二次POST請求中,編輯發送它的更改。你看看錶格,如果他是編輯,並相應地發送「更改」或「拒絕」。