gpt4 book ai didi

javascript - 如何使用 PHP 或 Node JS 进行实时通知?

转载 作者:行者123 更新时间:2023-11-28 06:00:10 24 4
gpt4 key购买 nike

我需要能够在 PHP 脚本完成后获得实时通知,我使用 jQuery、PHP、AJAX、nodeJS。

我通过 AJAX 向 PHP 脚本发送一些内容,我需要能够在该脚本启动时通知用户(简单),但我需要能够使用 nodeJS 来通知它何时完成。

AJAX 脚本

$(document).ready(function($) {
$('.rules-table').on('click', '.runRule', function(event) {
event.preventDefault();
/* Act on the event */
var ruleID = $(this).parents('tr').attr('id');

$.ajax({
url: '/ajax/run-rule.php',
type: 'POST',
dataType: 'json',
data: {
ruleID: ruleID
},
})
.done(function(data) {
console.log(data);
})
.fail(function() {
console.log("error");
})
.always(function() {
console.log("complete");
});

});
});

发送到执行大量处理的 PHP 脚本(可能需要一段时间)所以我需要从这里访问 NodeJS 来通知用户它正在运行,然后通知它何时完成。我该怎么办?

最佳答案

当 Ajax 向 php 发出请求时,起始存储 sessionid 并向任何数据库(如 redis)请求 id,并使用 NodeJs 和 Socket.io 发送实时通知。在 PHP 代码中创建一个如下所示的函数,其中 $data 是信息,$requestId 是 ajax 请求的 id。在您的nodeJs代码中获取有关该requestId的 session ID并发出要显示的消息。

public static function sendSocketMessage($data, $requestId) {

$url = 'http://' . url . ':3000/publish?salt=<some_salt>';
$curl = new \skeeks\yii2\curl\Curl();
$curl->setOption(CURLOPT_POSTFIELDS, json_encode(array(
'id' => $requestId,
'message' => $data,
)));
$curl->setOption(CURLOPT_HTTPHEADER, array(
'Content-Type: application/json'
));
return $curl->post($url);
}

关于javascript - 如何使用 PHP 或 Node JS 进行实时通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37345484/

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