2016-05-31 145 views
0

我正在開發一個Web應用程序,在這個應用程序中我必須展示一下任務列表。
我需要做的是,一旦用戶打開一個任務(即在其瀏覽器中打開),它將被刪除所有其他用戶列表,或者表明該任務是採取,沒有人可以打開一個任務,那就是已經被別人打開。

此外,我需要的是一旦用戶關閉任務(例如用戶關閉瀏覽器),它得到重新添加到其他用戶的任務列表。

我該怎麼做? WebSocket在客戶端?任何其他更好的選擇?
如何在服務器端進行管理?

謝謝如何在Web應用程序中創建實時協調鎖?

+1

你做了什麼,直到這一點來實現這一行爲呢?您正在使用的技術堆棧是什麼? (例如前端的JQuery,中間件的Spring等)。您可以在任務的'點擊'時觸發ajax查詢,並讓服務器從'任務池'中移除該任務,並在用戶「關閉」任務時觸發另一個Ajax查詢。在這一點上,這是我可以告訴你的。 –

+0

直到我清楚瞭解這個「可操作性」之後,纔開始編碼,我想在客戶端打開一個websocket,並且花了一段時間(真)來鎖定任務,但不確定,我從來沒有做過這種事情(使用websocket)只讀取一些文檔,但我認爲與 - 例如 - 100.000 websocket連接我的服務器在同一時間檢查鎖不會是一個好主意.. 。 – hereForLearing

+0

剛纔看到您的編輯,你可以說我使用的春天(其實我使用Grails的,但它是一回事,Grails的這裏有較少的用戶,以便者優先,使其成爲Java的問題),我讀過有關使用Ajax來做到這一點的文章,但不建議,因爲來自服務器的答案可能亂 – hereForLearing

回答

2

有兩種解決方案(據我所知),您的問題:

  • 阿賈克斯(和長輪詢)

使用Ajax可以輪詢服務器每隔X秒爲實現所描述的行爲所必需的數據。這可能會起作用,但它不是推薦的方法。閱讀爲什麼在this thread

  • 的WebSocket

就像你在一個桌面應用程序(因此得名),你可以打開一個WebSocket連接(而不是HTTP之一)使用的插座,把它只要根據需要,只有在完成後才能關閉它。這是數據在客戶端和服務器之間不斷流動的首選方式。這也是supported by almost every major browser out there

爲的WebRTC和服務器發送的事件其他技術,例如,但考慮您的問題描述,這些可能不是你要找的內容。

題外話:我不知道爲什麼你的問題已經downvoted,看起來合法的給我。

相關問題