什么对象可以在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在将数据传输到客户端时会进行一些转换。