在使用藍牙連接(GameKit,特別是iOS6兼容性)的服務器 - 客戶端遊戲中,一個或多個客戶端設備(iPhone/iTouch)向服務器設備(iPad)發送時間戳,當每個客戶端上的按鈕被點擊時。即每個客戶端呼叫:導致不同時間間隔的同步NSDate生成
[[NSDate date] timeIntervalSince1970]
...然後將值作爲NSData
有效載荷發送到服務器。
當只有1個客戶端連接時,生成併發送到服務器的時間與物理分接時間相同。當連接兩個或多個客戶端時,即使所有客戶端完全同時點擊,所產生的時間也會有很大差異,例如,
客戶端1和2同時抽頭:
- 客戶機1個時間戳= 1396974546.558433(自1970年以來的時間間隔)
- 客戶端2時間戳= 1396974551.274747(自1970年以來的時間間隔)
即客戶2從客戶端1以5秒爲單位。雖然我接受幾毫秒的差異,但由於真正的同時攻絲很困難,因此多秒鐘是不可接受的。添加額外的客戶端在時間上產生或多或少的隨機差異,但通常幾秒鐘。
爲了使事情變得更加神祕,正在生成的時間戳不同客戶上:在服務器接收的時間戳是相同由客戶端生成(即它不是發生在運輸途中或在收據)。
我不知道是什麼原因造成的。有任何想法嗎?
轉到兩個客戶端的主屏幕並觀看時鐘應用程序圖標。第二隻手是同步還是關閉了5秒? – rmaddy