作者 王晓刚
1 个管道 的构建 通过 耗费 6 秒

gatewaywork部署上线调试

... ... @@ -214,7 +214,8 @@
})();
</script>
<script>
ws = new WebSocket("ws://gangjuren.w.brotop.cn:9528/");
ws = new WebSocket("ws://127.0.0.1:9528/");
// ws = new WebSocket("ws://gangjuren.w.brotop.cn:9528/");
ws.onopen = function() {
ws.send("X,5A5A5A5A0000,00,1,83bb,Y");
};
... ...
... ... @@ -65,11 +65,45 @@ class Events
echo "yanzhengshibai";
return ;
}
$str = ",".$number .",". $command_number .",". $date.",";
$arr = ["X", $number, $command_number, $date, self::crc16($str), "Y"];
$result = implode(',', $arr);
//回复
Gateway::sendToClient($client_id, $result);
//判断是否已有数板仪id
$row = self::$db->select('*')->from('gjr_equipment')->where("number = '$number'")->row();
$status = "A5";
if (!empty($row)) {
//判断状态
if($row['status'] != 'normal' || $row['end_time'] < time()){
$status = "B9";//禁用
}else {
$createtime = time();
$arr1 = [
'number' => $number,
'command_number' => $command_number,
];
//记录判断是否订阅
$api_subscrib = self::$db->select('*')->from('gjr_api_subscrib')->where("subscrib_ids like '%$row[id],%'")->row();
if(!empty($api_subscrib)){
$api = self::$db->select('*')->from('gjr_api')->where("id = '$api_subscrib[api_id]'")->row();
echo $api['callback']."\n";
//请求接口返回状态
$arr1['number'] = $number;
$result3 = json_decode(self::httpPost($api['callback'],$arr1),true);
if($result3['code'] == 1){
$is_success = 1;
if($result3['data']['status'] == 'normal'){
$status = "A5";//正常
}else{
$status = "B9";//非正常
}
}else{
$staus = "A5";//接口异常
}
}else {
$status = "A5";//未订阅返回正常
}
}
}
$str = ",".$number .",". $command_number.",".$status .",". $date.",";
$arr = ["X", $number, $command_number, $status, $date, self::crc16($str), "Y"];
$common = implode(',', $arr);
} else if ($command_number == "01") {
//数据同步以及状态同步
$time = $param[3];//时间
... ... @@ -85,57 +119,79 @@ class Events
$dianji_status = $param[12];//电机状态
$yejing_status = $param[13];//液晶状态
$wenshidu_status = $param[14];//湿度传感器状态
//判断是否已有数板仪id
$row = self::$db->select('*')->from('gjr_equipment_log')->where("number = '$number'")->row();
if (empty($row)) {
$arr = [
'number' => $number,
'command_number' => $command_number,
'time' => $time,
'position' => $position,
'address' => $address,
'quantity' => $quantity,
'wendu' => $wendu,
'shidu' => $shidu,
'papers' => $papers,
'papers_count' => $papers_count,
'times' => $times,
'sensor_status' => $sensor_status,
'dianji_status' => $dianji_status,
'yejing_status' => $yejing_status,
'wenshidu_status' => $wenshidu_status,
'socket_data' => json_encode($param),
'createtime' => time(),
];
//插入
self::$db->insert('gjr_equipment_log')->cols($arr)->query();
} else {
$arr = [
'command_number' => $command_number,
'time' => $time,
'position' => $position,
'address' => $address,
'quantity' => $quantity,
'wendu' => $wendu,
'shidu' => $shidu,
'papers' => $papers,
'papers_count' => $papers_count,
'times' => $times,
'sensor_status' => $sensor_status,
'dianji_status' => $dianji_status,
'yejing_status' => $yejing_status,
'wenshidu_status' => $wenshidu_status,
'socket_data' => json_encode($param),
];
//更新
self::$db->update('gjr_equipment_log')->cols($arr)->where("number = '$number'")->query();
//判断是否已数板仪id
$row = self::$db->select('*')->from('gjr_equipment')->where("number = '$number'")->row();
$status = "A5";
if (!empty($row)) {
//判断状态
if($row['status'] != 'normal' || $row['end_time'] < time()){
$status = "B9";//禁用
}else {
$createtime = time();
$arr1 = [
'number' => $number,
'command_number' => $command_number,
'time' => $time,
'position' => $position,
'address' => $address,
'quantity' => $quantity,
'wendu' => $wendu,
'shidu' => $shidu,
'papers' => $papers,
'papers_count' => $papers_count,
'times' => $times,
'sensor_status' => $sensor_status,
'dianji_status' => $dianji_status,
'yejing_status' => $yejing_status,
'wenshidu_status' => $wenshidu_status,
'socket_data' => json_encode($param),
'createtime' => $createtime,
];
// $db->beginTrans();
//数板仪器数据同步记录
$result1 = self::$db->insert('gjr_equipment_log')->cols($arr1)->query();
//记录判断是否订阅
$api_subscrib = self::$db->select('*')->from('gjr_api_subscrib')->where("subscrib_ids like '%$row[id],%'")->row();
if(!empty($api_subscrib)){
$api = self::$db->select('*')->from('gjr_api')->where("id = '$api_subscrib[api_id]'")->row();
//请求接口返回状态
unset($arr1['socket_data']);
unset($arr1['createtime']);
$arr1['number'] = $number;
$result3 = json_decode(self::httpPost($api['callback'],$arr1),true);
if($result3['code'] == 1){
$is_success = 1;
if($result3['data']['status'] == 'normal'){
$status = "A5";//正常
}else{
$status = "B9";//非正常
}
}else{
$staus = "A5";//接口异常
}
$arr2 = [
'api_id' => $api_subscrib['api_id'],
'type' => 1,
'subscrib_id' => $api_subscrib['id'],
'notice_url' => $api['callback'],
'times' => $api['times'],
'content' => json_encode($arr1),
'createtime' => time(),
'is_success' => empty($is_success) ? 0 : $is_success,
];
//记录订阅通知记录
$result2 = self::$db->insert('gjr_subscrib_log')->cols($arr2)->query();
}else {
$status = "A5";//未订阅返回正常
}
}
}
$str = $number . $command_number . $date;
$arr = ["X", $number, $command_number, $date, self::crc16($str), "Y"];
$result = implode(',',$arr);
//回复i
Gateway::sendToClient($client_id, $result);
$str = $number."," . $command_number."," . $status."," . $date;
$arr = ["X", $number, $command_number, $status, $date, self::crc16($str), "Y"];
$common = implode(',',$arr);
}
//回复i
Gateway::sendToClient($client_id, $common);
}
/**
... ... @@ -291,4 +347,23 @@ class Events
}
return $shu;
}
public static function httpPost($url,$data){ // 模拟提交数据函数
$curl = curl_init(); // 启动一个CURL会话
curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 对认证证书来源的检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在
// curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
curl_setopt($curl, CURLOPT_POST, true); // 发送一个常规的Post请求
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包
//curl_setopt($curl, CURLOPT_TIMEOUT, 120); // 设置超时限制防止死循环
curl_setopt($curl, CURLOPT_HEADER, false); // 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // 获取的信息以文件流的形式返回
$result = curl_exec($curl); // 执行操作
if (curl_errno($curl)) {
echo 'Error POST'.curl_error($curl);
}
curl_close($curl); // 关键CURL会话
return $result; // 返回数据
}
}
... ...