javascript - socket.io - JSON 是发送对象所必需的吗

标签 javascript json node.js

我在前端有一个对象,我想将它广播给所有连接的客户端。我可以按照我定义它的方式将它作为纯粹的对象发送吗?还是我总是必须在发送之前将其字符串化为 JSON 对象?

我的对象:

var myBox = {
         x: 400,
         y: 700,
         w: 231,
         h: 199,
         c: "red",
         ....
         }

我需要字符串化吗?

var myBox  = JSON.stringify({

            x: 400,
            y: 700,
            ...
        });

目前我是这样发送的,msg 是一个 JSON:

socket.emit('message', msg);

最佳答案

您可以将对象传递给 emit 而无需自己对其进行字符串化。它将以明文形式发送,但客户端回调将传递一个已解析的对象。

换句话说,这样做没问题:

var myBox = {     
    x: 400,
    y: 700,
    w: 231,
    h: 199,
    c: "red"
}

socket.emit('message', myBox);

在客户端监听时,无需担心JSON.parse:

socket.on('message', function (data) {
    alert(data.x);
});

关于javascript - socket.io - JSON 是发送对象所必需的吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16592908/

相关文章:

javascript - 散列 JavaScript 对象

javascript - 如何在没有表单的情况下从 $.post(...) 方法传递 guid 或字符串?

json - 如何从 Jenkins 构建请求中获取 JSON 对象

java - Jackson JSON 流 API : Read an entire object directly to String

javascript - 将 Mongo DB 对象数据库传递给 Express 中间件

javascript - 您如何查看哪个 Javascript 脚本生成了特定的 html 行?

javascript - Vue3+Vite : error handling in production

mysql - 如何在 Laravel 的一个表中连接外键不唯一的表

node.js - node.js ubuntu native 包安装上的 linux-tick-processor 在哪里?

node.js - Ubuntu:我应该全局安装 NVM 还是每个用户安装 NVM?