gpt4 book ai didi

node.js - 如何使用 Node.js 检测网络变化

转载 作者:搜寻专家 更新时间:2023-10-31 23:05:10 24 4
gpt4 key购买 nike

我如何监听网络连接的变化?

您知道完成此任务的任何实现或模块吗?

我想知道是否存在类似于:

  reachability.on('change' function(){...});
reachability.on('connect' function(){...});
reachability.on('disconnect' function(){...});

我用谷歌搜索了它,但找不到任何相关信息。

感谢任何帮助。谢谢

最佳答案

Node 没有内置这样的功能。您可能能够连接到操作系统以监听网络接口(interface)是否启动或关闭,甚至以太网电缆是否被拔掉,但任何其他类型的连接丢失都很难立即确定。

检测死连接的最简单方法是使用应用程序级 ping/心跳机制和/或某种超时。

如果网络连接检测不是特定于特定的网络请求,您可以执行类似这样的操作,通过持续 ping 一些连接良好的响应 ping 的系统来全局测试网络连接。示例:

var EventEmitter = require('events').EventEmitter,
spawn = require('child_process').spawn,
rl = require('readline');

var RE_SUCCESS = /bytes from/i,
INTERVAL = 2, // in seconds
IP = '8.8.8.8';

var proc = spawn('ping', ['-v', '-n', '-i', INTERVAL, IP]),
rli = rl.createInterface(proc.stdout, proc.stdin),
network = new EventEmitter();

network.online = false;

rli.on('line', function(str) {
if (RE_SUCCESS.test(str)) {
if (!network.online) {
network.online = true;
network.emit('online');
}
} else if (network.online) {
network.online = false;
network.emit('offline');
}
});



// then just listen for the `online` and `offline` events ...
network.on('online', function() {
console.log('online!');
}).on('offline', function() {
console.log('offline!');
});

关于node.js - 如何使用 Node.js 检测网络变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26259908/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com