Asp.Net MVC Webapi Eventsource 实现时效消息

ApiController

后端API

 public System.Net.Http.HttpResponseMessage GetUnknownNotices()
        {
            var user = FormsAuth.GetUserData();
            var ns = new pl_NoticesService();
            var nl = ns.GetNoticeList(user.UserID, false);
            return createHttpRequestMessage(Newtonsoft.Json.JsonConvert.SerializeObject(nl));
        }

System.Net.Http.HttpResponseMessage createHttpRequestMessage(string data)
        {
            var sb = new System.Text.StringBuilder();
            sb.AppendFormat("retry:{0}\n",10000);      //推送间隔
            sb.AppendFormat("event:{0}\n", "message"); //绑定onmessage
            sb.AppendFormat("id:{0}\n", DateTime.Now.Ticks.ToString());
            sb.AppendFormat("data:{0}\n", data);

            var response = new System.Net.Http.HttpResponseMessage
            {
                Content = new System.Net.Http.StringContent(sb.ToString(), System.Text.Encoding.GetEncoding("UTF-8"),"text/event-stream")
            };
            response.StatusCode = System.Net.HttpStatusCode.OK;
            return response;
        }

前端JS

if (typeof (EventSource) != "undefined") {
    var es = new EventSource("/api/xxxx/GetUnknownNotices");
    es.onmessage = function (event) {
        var data = JSON.parse(event.data);
        $('#msgCount').text(data.length+"\n\n")
    };
    es.onopen = function (event) {
        console.log("open:" + es.sta);
    };
    es.onerror = function (event) {
        console.log("error:" + es.readyState);
    };
} 
else {
        console.log("该浏览器不支持");
}

参考:

https://www.runoob.com/html/html5-serversentevents.html

转载于:https://www.cnblogs.com/EminemJK/p/11308020.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值