html - WebSockets 和它的异步/同步部分

标签 html websocket

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

首先您地址构造对象,然后定义回调,如onopen,它在连接打开时被调用。现在,如果我在构建它时告诉 websocket 进行连接,那会怎样呢?如果构造函数以异步方式连接,是否可以保证调用我的onopen

总结一下:

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

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

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

最佳答案

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

In an event loop, everything runs asynchronously, except for your code.

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

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

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

关于html - WebSockets 和它的异步/同步部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11942694/

相关文章:

html - 预定义 HTML 结构中单选按钮、标签和可选标题的 CSS

html - 如何使网页高度适合屏幕高度

scala - Scala中Websocket连接的超时

node.js - Windows 上的 nodejs 和 websocket

html - 错误在哪里?导航栏向左跳无法弄清楚

html - 在 CSS : rails 4 + bootstrap 3 中使用 glyphicon 作为背景图片

python - 是否可以连接到 https URL?

javascript - 使用 RabbitMq 和 websockets 扩展应用程序

javascript - 我如何创建自己的 url,如 ws ://echo. websocket.org?

javascript - 使用 JavaScript 随机化一组现有图像的布局