2012-03-27 90 views
1

我正在建立一個網站,提供關於各種主題的1對1輔導。教練是通過網絡完成的(視頻通話,文件上傳,這樣的東西),最重要的事情之一是客戶按時付款。我的問題如下:我如何知道教練課程結束的時間(以便我可以正確記帳客戶)?這個用例推薦的解決方案/技術是什麼?

我打算在教練會議大致存儲在數據庫中是這樣的:

coach_id:integer 
    client_id:integer 
    created_at:datetime 
    updated_at:datetime 
    in_progress:boolean 

在會議的最後,我會做的updated_at和created_at之間的差異,並得到會議的長度。

下面是我看到潛在的問題:

  • 教練失去網絡連接=>在這種情況下,客戶會按網站,該網站會通知我們,本次會議有一個問題上的一個按鈕,和會議的updated_at將被更新,並false

  • 客戶端失去網絡連接=>相同的工作流程in_progress將被設置爲當主教練失去網絡連接

  • 都失去互聯網訪問=>這是最棘手的情況。我不知道如何通知服務器該會話應視爲已完成。我正在考慮通過推送來完成,並且同時擁有客戶端的瀏覽器和教練的瀏覽器每分鐘更新一次服務器。最壞的情況下,錯誤會導致賬單1分鐘的差異,這是可以接受的。缺點是我認爲這可能會加載服務器很多,我不知道一旦我們有很多用戶,這是否仍然是一個可行的解決方案。

您對這種方法有什麼看法?如果它很重要,應用程序將建立在Rails 3.2上。

+1

爲什麼不檢查HTML5 EventSource或WebSockets作爲檢測連接/丟失連接的可能方法? – 2012-03-27 10:27:52

+0

@PeterAronZentai,是的,但如果兩個人都失去連接?誰會通知服務器? – Geo 2012-03-27 10:31:50

+0

至少在.NET中(我猜在所有服務器環境中)都可以看到客戶端是否仍然連接(tcp明智)。 EventSource/WebSockets可幫助您建立一個始終打開的連接(而不是短時間連接的請求/響應連接),您可以監視它是否仍在運行/打開。 – 2012-03-27 11:18:56

回答

1

爲什麼不檢查HTML5 EventSourceWebSockets作爲檢測連接/丟失連接的可能方法?

至少在.NET中(我猜在所有服務器環境中)可以看出客戶端是否仍然連接(tcp方式)。 EventSource/WebSockets可以幫助您建立一個始終打開的連接(而不是短時間連接的請求/響應連接),您可以監視它的運行/打開狀態。

所以必須解決方案需要在websocket服務器上實現。

相關問題