2

WebSockets 究竟是如何工作的?实施它们似乎很奇怪。

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

把它们加起来:

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

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

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

4

1 回答 1

2

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

在事件循环中,除了您的代码之外,一切都是异步运行的。

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

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

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

于 2012-08-13T21:59:01.220 回答