2012-11-26 127 views
2

客戶BSON對於金融系統,我需要使用輕量和快速的協議從服務器推服務器(如Socket.IO)使用上的JavaScript

正如你所知道將數據傳送到客戶端,使用BSON進行打包和解包也比使用本機JSON花費更多時間,並可能成爲瓶頸。

我想知道,這是正確的方法來使用BSON而不是JSON傳輸數據,以減少消息的大小?

+0

如果您使用輪詢,您可以利用gzip壓縮並僅使用JSON。這是不是問題? – tjameson

+0

@tjameson我也有gzip壓縮。這可能是投票或推動,這取決於客戶端的瀏覽器。我正在尋找比原生JSON更好更快的協議。 –

+0

數據是什麼樣的?此外,gzip將不可能與websockets一起工作,因爲websockets會暴露原始TCP流。 – tjameson

回答

3

我想知道,這是正確的方法來使用BSON而不是JSON爲 傳輸數據,以減少消息的大小?

這取決於應用。如果它是基於瀏覽器的應用程序,那麼答案是。主要是因爲基於瀏覽器的JavaScript不具備處理二進制數據的能力。有些類似於數組的類型化數組可以進行排序 - 如果真的有必要的話,甚至現在的規範也只是「草稿」。更不用說IE不支持它了。

對於基於瀏覽器的應用程序,減小數據包大小的標準方法是使用像gzip這樣的壓縮方法。這可以在您的服務器上配置,或者可以在您的Web應用程序中完成。

對於非瀏覽器的應用程序,答案是它取決於。像MongoDB這樣的項目在BSON方面取得了巨大的成功。另一方面,整個Web只用JSON +壓縮就可以很好地運行。最好的答案是讓你自己進行基準測試,看看你的情況是否合理。

+2

在所有的現代瀏覽器中都包含IE10,那麼類型化的數組[*支持*](http://caniuse.com/typedarrays)。不過,IE不支持<= 9。 – tjameson