2014-07-05 43 views
-4

如何通過Websocket傳遞WebSocket對象?爲什麼無法通過套接字傳輸WebSocket?

ws.onOpen.listen((e) { 
    outputMsg('Connected'); 
    WebSocket otherWebSocket = ...; 
    ws.send(otherWebSocket); // does not work 
    }); 
+0

*「不起作用」*取而代之的是什麼? Web插座可能無法以合理的方式序列化和反序列化。 –

+0

這是不可能的。在某些時候,WebSocket會封裝一個OS本地套接字,並且無法以任何方式有意義地序列化OS套接字。 – user1937198

+0

我這麼認爲。 RTC不發展。瀏覽器之間的連接可以在忘記p2p的同時... – Dima00782

回答

1

根據現有的評論,直接序列化一個像web套接字這樣的對象是沒有意義的。但是,有一個技巧,我已經看到在Python中可以使用可能在這裏很有用。道歉,如果這有點模糊;我不知道Dart。

訣竅涉及編寫一個包裝WebSocket的類,並有一個被調用序列化的方法。類構造函數需要存儲構造函數參數。

然後,序列化方法可以將這些構造函數參數和任何其他現有的「狀態」數據(例如,尚未從web套接字讀取的字節,與服務器相關的任何與會話相關的數據,例如密鑰,客戶端ID,等等)和關閉 WebSocket。

收件人將能夠基於這些參數創建新的WebSocket並基於該狀態數據恢復與服務器的交互。

很顯然,這將需要在套接字的另一端的服務器合作關閉和重新打開套接字,並繼續進行,就像沒有發生任何事情一樣。如果服務器不打算這樣做,那麼這種技術將無法工作。

Python code我指的是如何序列化文件描述符。它所做的只是序列化文件的路徑和名稱,當前文件位置,讀/寫模式等。這允許序列化文件的接收者以與之前相同的狀態重新打開文件。