WebSockets和Async / Sync部分

时间:2012-08-13 21:36:59

标签: html5 websocket

WebSockets如何正常工作?实施它们似乎很奇怪。

首先使用地址构造对象,然后定义在打开连接时调用的onopen之类的回调。现在,如果我在构建它时告诉websocket连接,会发生什么?如果构造函数以异步方式连接,是否可以保证调用onopen

总结一下:

1)当我宣布所有回调时,websocket何时决定连接?

2)send()方法是异步的吗?如果是这样,有没有办法将其称为同步?

编辑:我发现send()是异步的,有一个bufferedAmount属性可以返回缓冲要发送的数据量。但是,第二个问题的第二部分仍然存在。

1 个答案:

答案 0 :(得分:2)

我找到了一个很好的方法来解释事件循环的这一部分是如何工作的:

  

在事件循环中,除代码外,所有内容都以异步方式运行。

在下一个事件循环迭代发生之前,将始终执行连续语句。这意味着您可以安全地将事件侦听器分配给ws对象,因为您知道在当前迭代完成之前它无法调用它们。

至于发送,正如您所注意到的那样,这些值通常是缓冲的。但是,在onopen事件被触发之前发送任何消息可能是个坏主意,因为您在尚未打开的连接上缓冲消息。

我希望这能回答你的问题。