天天看點

Unity3d 下websocket的使用

首先介紹一下什麼是websocket,以及與socket,和http的差別與聯系,然後介紹一下websocket的一些開源的項目。

WebSocket協定是為了實作網絡用戶端和伺服器端全雙工通信而引入的一種基于消息幀和TCP的通信機制,這個協定本身的目标是為了在http伺服器上引入雙向通信的機制,進而克服http單向通信的缺陷(http設計的初衷就不是為了雙向通信),其可以在複用http的端口,支援http的代理,認證等,雖然如此,websocket可以獨立于http存在。

那麼WebSocket與http,socket有什麼差別和聯系呢。

WebSocket和http

其實從曆史上來講,websocket是為了克服http無法雙向通信而引入的,在通常的使用中,可以複用http的端口與功能,除此外,他們沒有其他的聯系,而是完全是獨立的協定,通常情況下,http是單向的web

服務,而websocket是全雙工的,伺服器和用戶端可以實時的傳輸資訊,在引用時他們可以在http伺服器上同時部署,特别是在NodeJs中。

WebSocket與Socket

那麼websocket和socket是什麼關系呢?

其實可以了解為websocket是在socket的基礎上實作的,其基于消息幀和TCP協定,而socket更通用,在程式設計中,可以選在tcp,udp,也需要自己控制資料流格式,每次的資料的長度都需要自己控制與讀取。

現在越來越多的Unity3d遊戲需要使用websocket或者背景的服務,在實際中,NodeJs,SocketIO越來越多的作為背景的服務加以應用,那麼在unity3d的前端上可以使用的開源的websocket有兩種:

UnitySocketIO

優點: 直接使用dll,無unity3d的依賴,代碼比較好測試,支援多種消息類型,如文本,Json等。

Socket.IO for unity

優點: 代碼直接嵌入到Unity3d中,有所有的源代碼,支援Json的消息傳輸。

缺點: 寫測試用例相對繁瑣,Json消息簡單,不支援對象的Json解析,不過這塊應該可以重寫。http://blog.csdn.net/leoleocs/article/details/48824921