在前一篇文章中,苏南大叔给大家讲解了server-sent的最基本用法,在本篇文章之中,我们将学习到server-sent的更高级用法。在具体讲解之前,苏南大叔先透露一下相关内容。那就是,server-sent的接口格式是本篇文章的重点。我们来详细学习一下吧。

接口格式

首先,这个接口无论用什么语言编写。都必须发出名为 “Content-Type” 的 header 头,内容是 “text/event-stream”,而 “Cache-Control: no-cache” 这个 header 头并非必须的,而仅仅是个推荐项目。
下面用php来模拟一下这段内容:

header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
// data...

事件可以自定义id

服务器端使用 id 输出,但是客户端确实使用 lastEventId 来识别,这个是有些奇怪。
客户端:

s.onmessage = function (e) {
  //console.log(e);
  console.log(e.lastEventId);
};

服务器端:

echo "id: msg1\n";
echo "data: 识别id\n\n";

总结

接口必须输出特定content-type的header,可以输出多个事件。每个事件必须输出data,用2个换行符结尾。每个data可以配一个id和一个event。整体可以用retry来控制频率。但是一个接口只会有一个请求频率,所以说生效的retry只有一个。

本例子中,苏南大叔是以php为例子的,在其他语言中大同小异。将来如果有机会,苏南大叔会以其他语言作为接口范例,继续讲解这个server-sent事件。欢迎大家关注:https://newsn.net/tag/server-sent/

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接作者。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

 【加群】加入QQ群【175454274】和大家一起讨论这个问题

 【源码】本文代码片段及相关软件,请点此获取

 【绝密】秘籍文章入口,仅传授于有缘之人   js    server-sent

本站的忠实读者小伙伴,正在阅读下面这些文章: