【问题标题】:Why it is impossible to transmit a WebSocket through socket?为什么无法通过套接字传输 WebSocket?
【发布时间】:2014-08-26 17:47:39
【问题描述】:

如何通过 Websocket 传递 WebSocket 对象?

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

【问题讨论】:

  • “不起作用” 会发生什么?可能 Web 套接字无法以合理的方式进行序列化和反序列化。
  • 这是不可能的。在某些时候,WebSocket 包装了一个 OS 本机套接字,您无法以任何方式有意义地序列化 OS 套接字。
  • 我是这么认为的。 RTC 不发展。浏览器之间的连接可能会忘记 p2p...
  • 你能传真传真机吗?您可以通过电话发送电话吗?
  • 你为什么要这样做?

标签: serialization websocket dart


【解决方案1】:

根据现有的 cmets,直接序列化像 web socket 这样的对象是没有意义的。但是,我在 Python 中看到了一个技巧,可能在这里很有用。抱歉,如果这有点含糊;我不会飞镖。

诀窍涉及编写一个类,该类将包装一个 WebSocket 并具有一个调用用于序列化的方法。类构造函数需要存储构造函数参数。

然后,序列化方法可以序列化这些构造函数参数和任何其他现有的“状态”数据(例如,尚未从 Web 套接字读取的字节、迄今为止与服务器的对话相关的任何数据,例如密钥、客户端 ID 等) 并关闭 WebSocket。

接收者将能够基于这些参数创建一个新的 WebSocket,并根据该状态数据恢复与服务器的交互。

显然,这将需要套接字另一端的服务器配合关闭和重新打开套接字并继续进行,就好像什么都没发生一样。如果服务器不这样做,那么这种技术将不起作用。

我所指的Python code 处理如何序列化文件描述符。它所做的只是序列化文件的路径和名称、当前文件位置、读/写模式等。这允许序列化文件的接收者以与之前完全相同的状态重新打开文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 2015-04-13
    • 1970-01-01
    • 1970-01-01
    • 2012-09-02
    • 1970-01-01
    相关资源
    最近更新 更多