2011-06-01 59 views
0

我處於涉及QR碼的應用程序的設計階段。這將是一場用戶看到QR碼並對其進行掃描的比賽。第一個掃描QR碼的用戶是贏家。讀取QR碼的最快方法客戶端與服務器端

因爲比賽是先到先得,我想確保掃描代碼的第一個用戶是贏家。我已經注意到(至少從我讀過的內容),有JavaScript和C#方法來讀取QR碼(是否有JQuery方式?)。

哪種方式最快/最公平/最有效率?假設將有許多人一次掃描QR碼。我想確保掃描它的第一個人是贏家,並且不會因爲他的請求處理得不夠快而陷入問題。

我想我會問的真正問題是:當有許多用戶在一個應用程序上嘗試一個動作時,客戶端或服務器端的方法會更好嗎?這些差異是否會產生像我擔心的效果?等。

+0

什麼是比賽和你期待什麼樣的容忍?這是一個快速繪製西部槍戰式的東西嗎?你是否在賽道上配備了內置攝像頭的賽車?或者,人們在整個城市尋找一整天的清道夫,把時間縮短到納秒而不是一個大問題? – Dlongnecker 2011-06-01 15:21:20

+0

沒有進入很多細節,它會是這樣的。一羣用戶將在同一區域(如劇院),QR碼將隨機出現在屏幕上。然後,第一個掃描它的用戶將成爲贏家。 – 2011-06-01 15:56:44

回答

3

掃描QR碼有兩個階段。

  1. 捕捉圖像
  2. 轉換圖像爲文本

步驟1必須在客戶機上完成的。

然後成爲「客戶端CPU功率+發送文本數據時間」的問題。 「服務器CPU功率(客戶端共享)+發送圖像數據的時間」。

客戶端CPU功率是可變的。帶寬是可變的。延遲是可變的。如果您希望解碼在那裏發生,您需要爲每臺用戶提供更多的CPU功率和帶寬。

當然,如果使用「發送圖像」方法,您可以測量從上傳圖像而不是解碼的時間。

所以,結論是:

將客戶端或服務器端方法更好地工作?

兩者都會在一段時間。

+0

這對我很有用。無論如何,我有代碼做服務器端,所以如果大致相同,那麼我可以節省時間並重用它 – 2011-06-01 15:15:07

0

無論哪種方式,解碼圖像的過程都需要一些時間,並且這取決於客戶端CPU或網絡速度。

一旦你捕捉到客戶端上的圖像,你可以從服務器請求一個令牌/時間戳。這將是一個小的請求,所以網絡速度不會有太大影響。然後,您可以繼續對客戶端上的圖像進行解碼,或者將我發送給服務器進行解碼。

如果兩個用戶及時接近,則知道哪個用戶首先從他們的令牌中捕獲圖像。

0

在現代智能手機上,檢測和解碼QR碼可能會在100毫秒以內發生。我懷疑客戶端的變化會產生任何有意義的不公平。但是,我當然認爲客戶端的可變性要小於上傳圖片而不是解碼客戶端時會起作用的網絡可變性。