Tag: server sent events

如何完全实现服务器发送的事件以进行消息轮询

我正在尝试使用API​​与服务器通信。 为了更容易,我写了一个脚本,将使用PHP脚本传递API。 我的目标是每秒查询一次API以查看其队列中是否有新消息。 我被建议使用服务器发送的事件方法,并让服务器仅在有新内容时才向客户端发送响应。 这是我的PHP脚本 ‘server:IP’, //REQUIRED – Server Name ‘port’ => 8018, //REQUIRED – Server Port ‘userID’ => ‘user’, //REQUIRED – UserID to login with ‘password’ => ‘123456’, //REQUIRED – password for the UserID to login with ); try { //create a new instance of icws $icws = new API\ICWS($config); //create a new session […]

有没有办法让使用服务器发送的事件持久化?

我需要运行一个脚本,每秒更新一次用户的浏览器。 我的需求是从服务器到客户端的单向通信。 为此,我实现了从服务器轮询到用户客户端的服务器发送事件 。 问题是用户允许打开与服务器的多个连接“通过打开多个浏览器选项卡”这是一个问题,因为它增加了服务器上的开销。 我想将来自单个用户的连接限制为1.意味着在所有选项卡上与服务器建立单一连接。 即使用户打开了10个浏览器选项卡,客户端和服务器之间也会建立一个连接。 这是我的服务器发送的事件实现 var evtSource = new EventSource(‘getMyMessages.php’); evtSource.addEventListener(“getMessagingQueue”, function(e) { console.log(e); var data = JSON.parse(e.data); processServerData(data); }, false); evtSource.onerror = function(e) { evtSource.close(); }; 有没有办法使这种沟通方法持久存在?

服务器发送事件轮询导致长时间延迟

我有一个连接器,它将使用cURL和PHP调用RESP API。 我需要每秒调用一个方法来检查新消息然后处理它们。 我使用以下两种方法来处理消息 使用SetInterval() AJAX轮询:每秒调用一次php脚本。 除非我无法防止多个SetInterval()从浏览器的不同选项卡同时运行,否则这种方法很有效。 (我不想让用户打开10个浏览器选项卡,这导致一个用户有10个SetInterval()同时运行。 使用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); } 一旦用户登录我就调用了这个函数startCalls() 在index.php文件中我有这个代码要调用 if($method == ‘getMessages’){ $messaging = new ICWS\Messaging($icws); $messaging->processMessages(); $myQueue = $messaging->getCallsQueue(); echo json_encode($myQueue ); } 这是我的第二个实现“Server-Sent Events” […]