(Server-sent Events)浅谈H5 中的服务器推送事件


当前第2页 返回上一页

服务端应当返回怎样的数据格式?应当以什么样的响应给客户端呢?先来个.Net 的样例


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

/// <summary>

    /// 推送消息

    /// </summary>

    /// <returns></returns>

    [HttpGet]

    public HttpResponseMessage SentNews()

    {

        HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK);

        try

        {

            //response.Headers.Add("Access-Control-Allow-Origin", "*");//如需要跨域可配置

            string data_str = “推送至客户端的数据”;//当然可以是json字符串格式

            string even = "", data = "";

            if (!string.IsNullOrWhiteSpace(data_str))

            {

                even = "event:sentMessage\n";

                data = "data:" + data_str + "\n\n";

            }

            string retry = "retry:" + 1000 + "\n";//连接断开后重连时间(毫秒),其实可以理解为轮询时间 2333...

            byte[] array = Encoding.UTF8.GetBytes(even + data + retry);

            Stream stream_result = new MemoryStream(array);

            response.Content = new StreamContent(stream_result);

            response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/event-stream");//此处一定要配置

            response.Headers.CacheControl = new CacheControlHeaderValue();

            response.Headers.CacheControl.NoCache = false;

        }

        catch (Exception ex)

        {

            LogHelper.WriteWebLog(ex);

        }

        return response;

    }

看完以上代码我想你应该有个大概了,响应的方式还是HTTPResponse响应,但总是有点小小的要求的:

响应报头"Content-Type" 要设置为 "text/event-stream"

响应的数据格式也应该注意到了上述代码中的"data:"、"event:"和"retry:"这些标记:

1.event:表示该行用来声明事件的类型。浏览器在收到数据时,会产生对应类型的事件。

2.data:表示该行包含的是数据。以 data 开头的行可以出现多次。所有这些行都是该事件的数据。

3.retry:表示该行用来声明浏览器在连接断开之后进行再次连接之前的等待时间。

4.id:表示该行用来声明事件的标识符(即数据的编号),不常用。

以上就是(Server-sent Events)浅谈H5 中的服务器推送事件的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

html5 ruby标签的定义及使用方法详解(内有实例介绍)

html5中localstorage本地存储的示例

html5各种头部meta标签的功能

html5和html4的区别有哪些

关于html5中video标签浏览器兼容性增强的方案分享

html5如何实现简单进度条效果?动态进度条的实现(代码示例)

h5移动端各种各样的列表的制作方法详解(四)

html5 manifest离线缓存的示例代码

利用html5自定义实现播放器代码分享

h5新特性的用法:监听app自带的返回键

更多相关阅读请进入《Server-sent》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...