init
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
<?php
|
||||
namespace Laysense\Monitor;
|
||||
|
||||
use WebSocket\Client;
|
||||
|
||||
class Detection
|
||||
{
|
||||
var $dest='ws://172.83.153.167:2345';
|
||||
var $nodeinfo;
|
||||
public function getNode()
|
||||
{
|
||||
$nodeinfo = $this->callWebSocet('{"msg":"getnodelist"}');
|
||||
$this->nodeinfo=$nodeinfo;
|
||||
}
|
||||
public function ping($host,$count)
|
||||
{
|
||||
$ping = $this->callWebSocet('{"msg":"ping","target:'.$host.'","type":"ICMP","count":'.$count.'}');
|
||||
foreach($this->nodeinfo as $node){
|
||||
$ping[$node->nodeid]['nodeinfo']=$node;
|
||||
}
|
||||
$this->ping=$ping;
|
||||
}
|
||||
public function getDelay()
|
||||
{
|
||||
$alldelay = 0;
|
||||
foreach($this->ping as $id=>$node){
|
||||
if((!isset($node['nodeinfo'])) || (!isset($node['delay'])) || $node['delay']<=10){
|
||||
unset($this->ping[$id]);
|
||||
}else{
|
||||
$alldelay += $node['delay'];
|
||||
}
|
||||
}
|
||||
$alldelay = $alldelay/count($this->ping);
|
||||
return $alldelay;
|
||||
}
|
||||
private function callWebSocet(){
|
||||
$client = new Client($this->dest);
|
||||
|
||||
// 发送消息
|
||||
$client->send($msg);
|
||||
|
||||
// 接收消息
|
||||
while (true) {
|
||||
try {
|
||||
$receive=$client->receive();
|
||||
$receive = json_decode($receive);
|
||||
if($receive->msg="setnodes"&&isset($receive->nodes)){
|
||||
$response = $receive->nodes;
|
||||
break;
|
||||
}elseif(isset($receive->delay)){
|
||||
$response[$receive->nodeid]['delay'] = $receive->delay/1000;
|
||||
}else{
|
||||
$response[$receive->nodeid]['ip'] = $receive->ip;
|
||||
$response[$receive->nodeid]['loc'] = $receive->loc;
|
||||
$response[$receive->nodeid]['asn'] = $receive->asn;
|
||||
$response[$receive->nodeid]['org'] = $receive->org;
|
||||
}
|
||||
} catch (\WebSocket\ConnectionException $e) {
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 关闭连接
|
||||
$client->close();
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user