我想要实现的是:
$.post('events.php', {'message': 'hello world'}, function(res) {
});
服务器部分是(events.php)
<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache'); // recommended to prevent caching of event data.
function sendMsg($id, $msg) {
echo "id: $id" . PHP_EOL;
echo "data: $msg" . PHP_EOL;
echo PHP_EOL;
ob_flush();
flush();
}
while(true) {
$serverTime = time();
if (isset($_POST['message'])) {
sendMsg($serverTime, 'message: ' . date("h:i:s", time()));
sleep(5);
}
}
我在(true)时尝试了无限循环以避免3秒的轮询。我也尝试过没有那个无限循环。只有发送消息的用户收到事件。
我理解这种做法并不好。但是,将SSE用于聊天应用程序的最佳实践是什么?
如何向所有用户发送事件?
SSE是每个客户端的专用套接字和专用进程。
这意味着您的服务器端进程与浏览器客户端的选择基本相同:轮询或订阅。
由于您的数据库可能与SSE服务器进程位于同一服务器/局域网上,因此重复轮询的缺点与浏览器客户端不同。因此,要创建一个聊天应用程序,您可以定期轮询存储聊天消息的SQL数据库,以查看是否有新消息。
subscribe方法的一个示例是让每个SSE进程打开一个本地运行的聊天服务器专用套接字,每当新聊天消息到达时,该套接字将广播给这些SSE侦听器。
我是 SSE(服务器发送事件)的新手。我找到了一种在Spring启动中使用SSE发送响应的方法。我能够每 20 秒发送一次响应。我用下面的代码做同样的事情。 但问题是,这个方法每20秒就被调用一次。 但是,我的要求是每20秒向客户端发送一次空响应,并在新用户添加到数据库时发送响应。 如何实现我的目标?或者我在概念上完全错了。
您好,我正在React中开发一个web应用程序,它使用Nginx从Express服务器接收SSE数据。 JS服务器 索引:JS const events=新事件源('https://api.myDomain.com/events', ); axios。post(<代码>https://api.myDomain.com/addCart,{客户端:this.state.clientId,购物车:car
我有一个ASP。net core 3.1服务器项目,它有一个非常简单的API发送单向服务器发送事件(SSE),如下所示: 现在,我想通过C#UWP客户端接收这些事件。很遗憾,我只收到第一个事件: 如何在UWP中创建行为以始终监听该连接并接收我可以进一步处理的事件?
我有以下Quarkus资源: 这将生成没有事件名称的事件,并且只生成数据部分。如何指定事件名称?
我已经在Java服务器中设置了SSE(服务器发送事件)。客户端构建在VueJS上,并使用EventSource包从服务器接收事件。我正在使用EventSourcePolyfill npm包https://www.npmjs.com/package/event-source-polyfill在客户端上。这个包允许我们在请求中发送授权头(针对我们的安全方案)。 客户端向我们的SSE服务发送请求并接收一
我无法理解HTML5s服务器发送的事件是否真的适合ReST体系结构。我知道并非HTML5/HTTP的所有方面都需要适合ReST架构。但我想从专家那里知道HTTP的哪一半是SSE(ReSTful的一半还是另一半!)。 一种观点是它是ReSTful的,因为客户端向服务器发出了一个“初始”HTTP GET请求,其余的只能看作是不同内容类型的部分内容响应(“文本/事件流”) 发送的请求不知道有多少响应将作