我正处于涉及QR码的应用程序的设计阶段。这将是一个用户看到QR码并进行扫描的比赛。第一个扫描QR码的用户是胜利者。
因为比赛是先到先得,我想确保扫描代码的第一个用户是赢家。我注意到(至少从我读过的内容)有Javascript和C#方法来读取QR码(是否有JQuery方式?)。
哪种方式最快/最公平/最有效?假设有很多人一次扫描QR码。我想确保第一个扫描它的人是胜利者,而不是因为他的请求处理得不够快而没有问题。
我想我会问的真正问题是:当有很多用户在一个应用上尝试一个操作时,客户端或服务器端方法会更好吗?差异会产生像我担心的影响吗?等等。
答案 0 :(得分:3)
扫描QR码有两个阶段。
步骤1必须在客户端完成。
然后它成为“客户端CPU功率+发送文本数据的时间”的问题。 “服务器CPU功率(在客户端之间共享)+发送图像数据的时间”。
客户端CPU功率是可变的。带宽是可变的。延迟是可变的。如果您希望在那里进行解码,则需要为服务器提供更多的CPU功率和每用户带宽。
当然,您可以测量上传图像的时间,而不是使用“发送图像”方法进行解码。
所以,最后:
客户端或服务器端方法会更好吗?
两者都会在某些时候。
答案 1 :(得分:0)
无论哪种方式,解码图像的过程都需要一些时间,具体取决于客户端CPU或网络速度。
在客户端上捕获图像后,您可以从服务器请求令牌/时间戳。这将是一个小请求,因此网络速度不会对它产生太大影响。然后,您可以继续解码客户端上的图像或将i发送到要解码的服务器。
如果两个用户及时关闭,您就知道哪个用户首先从其代币中捕获了该图像。
答案 2 :(得分:0)
在现代智能手机上,检测和解码QR码可能会在100毫秒内发生。我怀疑客户端的可变性会产生任何有意义的不公平。但是,我当然认为客户端的可变性小于上传图像而不是解码客户端时会发挥作用的网络可变性。