如何通过Websocket传递WebSocket对象?
ws.onOpen.listen((e) {
outputMsg('Connected');
WebSocket otherWebSocket = ...;
ws.send(otherWebSocket); // does not work
});
答案 0 :(得分:1)
根据现有的注释,直接序列化像Web套接字这样的对象是没有意义的。但是,我在Python中看到了一个技巧,可能在这里很有用。如果这有点模糊,请道歉;我不认识Dart。
这个技巧涉及编写一个包装WebSocket的类,并且有一个调用序列化的方法。类构造函数需要存储构造函数参数。
序列化方法然后可以序列化这些构造函数参数和任何其他现有的“状态”数据(例如,尚未从Web套接字读取的字节,与服务器到目前为止的对话相关的任何数据,如密钥,客户端ID等) )和关闭 WebSocket。
接收方将能够基于这些参数创建新的WebSocket,并根据该状态数据恢复与服务器的交互。
显然,这将要求套接字另一端的服务器在关闭和重新打开套接字时配合并继续进行,好像什么也没发生过一样。如果服务器不这样做,那么这种技术将不起作用。
Python code我指的是如何序列化文件描述符。它所做的就是序列化文件的路径和名称,当前文件位置,读/写模式等。这允许序列化文件的接收者以与以前完全相同的状态重新打开文件。