2012-05-24 51 views
3

在交互式Web應用程序的環境中,特別是那些利用Websockets等技術的庫,我們如何在客戶端瀏覽器和客戶端之間傳輸數據結構(例如地圖,列表,集合等)服務器?我迄今爲止遇到的例子只能傳遞字符串。如何在瀏覽器和服務器之間傳輸數據結構

這種支持情況取決於所使用的庫,還是提供了更一般的機制?

回答

5

您可以通過WebSocket的送三件事情(從客戶角度):

  • 字符串
  • ArrayBuffers
  • 斑點

如果你有一個複合的Javascript數據結構(層次的地圖和數組),那麼你應該使用JSON來將它們序列化爲字符串並通過WebSocket連接以字符串形式發送它們。

如果您有興趣通過WebSocket連接發送二進制字節或文件數據,您仍然可以序列化爲字符串(低效的帶寬方式),或者可以將數據作爲ArrayBuffers或Blob發送。

注意1:當發送ArrayBuffer或Blob導致服務器需要支持二進制幀的二進制WebSocket幀時。

注2:當服務器發送二進制幀時,客戶端可以選擇返回什麼類型的對象。這是WebSocket對象上的binaryType屬性,可以設置爲「arraybuffer」或「blob」。注3:如果您的瀏覽器僅支持較早的WebSocket Hixie協議系列(例如iOS Safari),則不存在二進制數據,您只能發送和接收字符串。

+0

感謝Websockets特有的額外細節。 – skyork

2

通常的方式是JSON或類似的。

+0

在等待答案時,我閱讀了這個:http://stackoverflow.com/questions/383692/what-is-json-and-why-would-i-use-it,這似乎表明JSON可能是解決方案。 – skyork

相關問題