2014-01-25 52 views
0

我正在使用Google GCM開發帶有推送通知的多人Android遊戲。 我的Web服務器有一個REST API。發送到此API的大部分請求都會向Google GCM服務器發送請求,以向對手發送通知。避免100ms的http請求來降低REST API的速度

平均來說,對我的API的調用長度約爲140毫秒,並且約100毫秒是由於發送到Google服務器的http請求造成的。

如何加快速度?我一直在想(我完全控制了我的服務器,我的堆棧是Bottle/gunicorn/nginx)創建一個獨立進程的數據庫,它會嘗試發送一個GCM請求隊列,但也許有一個更簡單的方法來做到這一點直接用瓶子或純蟒蛇。

回答

0

我已經解決了我的問題,感謝this thread

我使用芹菜通過任務隊列送我的通知。 我簡直不敢相信!

不管怎樣,謝謝:)

0

你可以做的最好的事情是使所有的網絡異步,如果你還沒有這樣做。

問題是,總會有一些網絡連接速度很慢的用戶,並且沒有一種通用的方法來讓他們快速上網:/。 除此之外,思路是:

  • 只發送一些小的數據包一個巨大的贊成許多小的數據包(這是更快)
  • 使用UDP在TCP,UDP是無連接的,自然更快
1

問題是,您的客戶正在等待您的服務器發送GCM推送通知。這種行爲沒有邏輯。

您需要更改服務器端代碼以處理您的API請求,關閉與客戶端的連接,然後才發送推送通知。

+0

我知道這就是問題所在,我知道我必須要改變這個邏輯和其他地方發送推送通知,我不只是不確定哪種方式是最好的。 我不知道很多python web框架,但在Bottle中,要關閉與客戶端的連接,路由方法必須返回響應。我認爲我不能以其他方式發送回覆,並且在發送後發送通知。我對Web服務器開發不太熟悉。我會看看你的建議是否可能與瓶! – groug

+0

閱讀Bottle Python中的異步調用:http://bottlepy.org/docs/dev/async.html –