我有一个在浏览器中运行的网络应用程序.该webapp连接到使用websockets的服务器.因此,服务器和我的客户机/浏览器之间的通信是基于WebSocket的.如果服务器上发生了一些神奇的事件,一些Web服务会向我的webapp发送一个新的XML/JSON,并显示新的数据.

但作为客户端/浏览器,我如何知道连接是否仍然存在?假设我在大约30秒内没有得到任何新的XML.我怎么知道连接是否关闭/断开/服务器脱机或一切正常,但服务器本身没有发生新的魔法事件.

推荐答案

3种方式:

  • 依靠TCP检测连接丢失,这最终会在JS onclose事件中弹出
  • 从服务器发送WebSocket ping.浏览器将使用WS PONG进行回复,客户端可能也会更可靠地检测到连接丢失
  • 将应用程序级别的心跳从浏览器发送到服务器,服务器需要有逻辑来回复.您不能从浏览器触发WS ping(在JS中)

Dart相关问答推荐

当未指定返回类型时,dart 显示另一个函数内部的确切返回类型,但对于顶层函数显示为动态

寻找provider context 的flutter问题

如何通过点击 BottomNavigationBarItem 以编程方式打开Drawer抽屉?

Dart JavaScript 与 jQuery 的互操作回调

那么在 Flutter 中缓存最简单的方法是什么?

如何在 Flutter Web 中使用 Skia/CanvasKit?

如何在Flatter中zoom 两个谷歌 map 标记

FInal和top-level lazy初始化

Flutter 从asset文件夹中读取所有文件

为什么这个文件会自动创建自己 generate_plugin_registrant.dart

在小部件构建期间,如何在Flutter中导航?

给 initState 内部的变量赋值或不在 Flutter StatefulWidget 中赋值有什么区别?

用于名称和数字省道的正则表达式

如何正确管理 Flutter 应用中的全局 textScaleFactor?

如何更改手机屏幕上的Flutter应用程序名称显示?

如何对map值进行排序?

用 dart 解析日期

如何在 Ubuntu 网络服务器上为 Dart 安装 pub(命令行使用)

Dart,对泛型的限制?

将多张map合并/合并为一张map