【问题标题】:How to emit undefined/null value to client with socket.io?如何使用 socket.io 向客户端发出未定义/空值?
【发布时间】:2020-04-22 04:57:33
【问题描述】:

我最近发现socket.io 解析器似乎从发出的数据对象中剥离了具有未定义/空值的键。这是不可取的,因为我正在尝试使用这些值来清除我的视图中的信息。

有人知道解决这个问题的方法吗? API 允许您提供自己的解析器,但我不想走这条路或更改默认解析器 (socket.io-parser)。

【问题讨论】:

  • 您找到解决方案了吗?我还需要发送未定义的值。
  • @c.bear 我发现的最佳解决方案是将 undefined/null 值映射到 undefined/null 的字符串表示形式,然后再将其发送到套接字。比如:val != null ? val : "N/A"

标签: javascript node.js parsing socket.io


【解决方案1】:

我还没有看到这种特定的行为。一个快速的解决方法是始终发送一个布尔参数 isUndefinedisNull 并在另一端检查它。

【讨论】:

    【解决方案2】:

    JSON.stringify()(我怀疑 socket.io 正在使用)也观察到相同的行为,undefined 也不是有效的 JSON 令牌。

    您可以在发送前用您想要的任何内容替换 undefined。 可以是 null 也可以是一些自定义字符串,并在另一端进行必要的检查

    const dataToEmit = { something: undefined };
    
    const replaceWith = null;
    const s = JSON.stringify(dataToEmit, (k, v) => v === undefined? replaceWith : v );
    const dataParsed = JSON.parse(s)
    
    socket.emit("channel_name", dataParsed);
    

    【讨论】:

      猜你喜欢
      • 2021-08-08
      • 2014-04-27
      • 1970-01-01
      • 1970-01-01
      • 2017-11-04
      • 2019-10-23
      • 1970-01-01
      • 2011-10-18
      • 2019-12-03
      相关资源
      最近更新 更多