我有一个连接器,它将使用 cURL 和 PHP 调用 RESP API。
我需要每秒调用一个方法来检查新消息,然后处理它们。我使用以下两种方法来处理消息
SetInterval():每秒调用一次 php 脚本。这工作得很好,除了我无法阻止多个SetInterval()浏览器的不同选项卡同时运行。(我不想让用户打开 10 个浏览器选项卡,这会导致一个用户SetInterval()同时运行 10 个浏览器选项卡。EventSource:一旦队列中有新数据,服务器将向浏览器发送更新。这会减慢响应时间。我对脚本的每次调用都需要大约 20 秒以上才能完成,这是一个问题。我不知道为什么会发生这种情况。这是我的SetInterval()实现
function startCalls(){
//update the screen using Intervals
refreshIntervalId = setInterval(function() {
$.getJSON("index.php", {'method': 'getMessages', 'jSON': true} , function(data){
processServerData(data);
});
}, 1000);
}
Run Code Online (Sandbox Code Playgroud)
一旦用户登录,我就会调用此函数startCalls()
在 index.php 文件内我有要调用的代码
if($method == 'getMessages'){
$messaging = new ICWS\Messaging($icws);
$messaging->processMessages();
$myQueue = $messaging->getCallsQueue();
echo json_encode($myQueue );
}
Run Code Online (Sandbox Code Playgroud)
这是我的第二个实现“服务器发送事件”
//Server Side Message Polling
function startPolling(evtSource){ …Run Code Online (Sandbox Code Playgroud)