socket.io中可以发出什么对象

时间:2014-03-27 16:46:16

标签: javascript node.js socket.io

使用socket.io库,我可以使用服务器端的socket.emit方法将哪些对象传输到客户端?例如,socket.io网站提供了类似以下内容的示例

socket.emit('news', { hello: 'world' });

但是,在使用emit方法时,我无法找到有关以下问题的任何文档:

  • 我可以使用emit传输“任何”JavaScript对象,比如一个方法,复杂属性等吗?
  • 我应该将我的数据/对象转换为JSON,然后传输JSON字符串。这当然会对可以传输给客户端的对象施加一些限制。
  • socket.io在实际转移到客户端时是否使用JSON转换。

1 个答案:

答案 0 :(得分:3)

From their documentation

  

支持所有数据结构,包括Buffer。 JavaScript函数无法序列化/反序列化。

这意味着你可以发出很多,包括JavaScript对象文字。您可以发出的唯一内容是函数,因为它们不可序列化,因此您将无法发出包含方法的对象,并且接收方可以使用这些方法。但是,允许使用嵌套属性。

您不必使用emit提前转换数据,但您需要使用send。按理说socket.io在将数据传输到客户端时会进行一些转换。