什么对象可以在socket.io中发射
使用socket.io
库,可以使用服务器端的socket.emit
方法将哪些对象传输到客户端? 例如, socket.io
站点提供了一个如下所示的示例
socket.emit('news', { hello: 'world' });
但是,在使用emit
方法时,我找不到以下问题的任何文档:
- 我可以使用
emit
来传输“任何”的JavaScript对象,说方法,复杂的属性等? - 我应该将我的数据/对象转换为JSON,然后传输JSONstring。 这当然会对可以传送给客户端的对象有一些限制。
- 当
socket.io
实际传输到客户端时,是否使用JSON转换?
从他们的文档 :
所有的数据结构都被支持,包括Buffer。 JavaScript函数不能被序列化/反序列化。
这意味着你可以发射很多JavaScript对象文字。 唯一不能发出的是函数,因为它们不是可序列化的,所以你将不能发射包含方法的对象,并且这些方法可以被接收者使用。 嵌套属性将被允许,但是。
您不必提前将数据转换为emit
数据,但您可以send
。 这意味着socket.io
在将数据传输到客户端时会进行一些转换。