javascript - Socket IO 日期变成字符串
问题描述
我尝试从服务器向客户端发出日期,尽管在客户端日期变为字符串,我必须始终使用new Date()
字符串将其再次转换为日期。
此外,当我通过套接字从客户端向服务器发送事件,然后服务器通过回调将日期返回给客户端时,它也变成了一个字符串。
它适用于双方,即当我将日期从客户端发送到服务器时,它也成为服务器端的字符串。
有没有办法避免立即转换并将其用作日期?
解决方案
不可以。如果您通过网络发送数据,则必须对其进行序列化。它在这里自动转换为 a string
,但没有什么禁止您首先将其转换为您想要的任何其他格式,然后在另一端执行相反的操作。无需太多麻烦,您几乎可以发送任何可转换为 JSON 的内容。
发生的情况是,要进行传输,您要发送的任何数据都必须被序列化。socket.io(和一般的 JS)选择的方法是使用 JSON 标准。
您发送的任何内容都将首先转换为JSON,它只能存储非常有限的元素范围。任何东西都将被转换为原始类型,如string
or number
,或者 JSON 支持的仅有的两种非原始类型,即object
s 和array
s。
所以几乎所有不是原始的和不是数组的东西都会被转换成一个对象,只保留可序列化的属性。这是通过调用toJSON
您要发送的数据的属性来完成的。在您的情况下,toJSON
a 的方法Date
返回他的字符串表示形式,这就是最终发送的内容。
const date = new Date(); // Your date
console.log(date.toJSON()); // What will be sent
推荐阅读
- java - 展开字符串分解成重复的嵌套组件
- laravel - 如何在 laravel + socket.io 中将一页的实时事件流式传输到另一页?
- angular - 用于单元格渲染器的 Angular ag-grid 库父子通信
- amazon-web-services - 需要审批工作流系统
- android - 华为自动语音识别限制 - PICKUP UI上的服务不可用错误
- amazon-web-services - Elastic Beanstalk 的配置部署工作流程?
- php - 从 php 文件中分离 html 表单
- android - 从库中过滤掉特定的 LogCat 消息
- java - 线程“主”java.lang.NoClassDefFoundError 中的异常:net/dv8tion/jda/api/JDABuilder
- outlook - Outlook 加载项 - 如何声明我们的加载项不支持使用 IE11 的 Outlook 版本