支持


不支持IE

个人理解说明


个人理解:这种消息推送方式不太推广,原因有以下三点~~~`我怎么老是学这些自己认为不会推广的东西呢~汗

  • 在.net中,framework4.5以上就可以由SignalR来实现消息推送。

  • 而这种h5的消息推送,是页面基于WebSocket不断轮训后台才打到目的,本质和Ajax设置定时器不断轮训一个道理,推广还有待考察。

  • 由于IE的不支持 你懂的~如果要实现IE的支持,需要采用其他的方式:XDomainRequest代替XMLHttpRequest。具体参考http://www.ibm.com/developerworks/cn/web/1307_chengfu_serversentevent/


页面代码


<!DOCTYPE html >
<html>
<head lang="zh-CN">
<title></title>
<script type="text/javascript">
window.onload = EventPush;
function EventPush() {
if (typeof EventSource != "undefined") {
var source = new EventSource("MsgPush.ashx");
//e.data在onopen事件里是undefined
source.onopen = function (e) {
document.getElementById("result").innerHTML += "<br/>" + "onopen" + "<br/>";
};
source.onmessage = function (e) {
document.getElementById("result").innerHTML += "onmessage" + e.data + "<br/>" + e.target.url + "<br/>" + e.target.readyState + "<br/>";
};
//e.data在onerror事件里是undefined
source.onerror = function (e) {
document.getElementById("result").innerHTML += "onerror" + "<br/>";
}; }
else {
document.getElementById("result").innerHTML = "不支持您老的浏览器~"
}
}
</script>
</head>
<body>
<div id="result">
</div>
</body>
</html>

Asp.net 一般处理程序


using System;
using System.Web;
namespace accortion
{
/// <summary>
/// MsgPush 的摘要说明
/// </summary>
public class MsgPush : IHttpHandler
{ public void ProcessRequest(HttpContext context)
{
//设置类型
context.Response.ContentType = "text/event-stream";
//Provisional headers are shown
//Accept:text/event-stream
//Cache-Control:no-cache
//context.Response.Headers.Set("Cache-Control", "no-cache"); //这种不行 //禁止页面缓存的可行2种形式
context.Response.Cache.SetNoStore();//Cache-Control:private, no-store//可以
// TimeSpan TS = new TimeSpan(0);
// context.Response.Cache.SetMaxAge(TS);//Cache-Control:private, max-age=0//可以
string time = "data:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "\n\n";//数据前面必须以data:开头,后面必须有两个换行
context.Response.Write(time);
} public bool IsReusable
{
get
{
return false;
}
}
}
}

参考


http://www.ibm.com/developerworks/cn/web/1307_chengfu_serversentevent/

https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events

http://www.codeguru.com/csharp/csharp/cs_internet/displaying-real-time-data-using-html5-and-asp.net.htm

html5:服务器事件推送(server-sent events)Asp.net的更多相关文章

  1. HTML5服务器消息推送(java版)

    前端代码(html5.html): <html> <meta http-equiv="Content-Type" content="text/html; ...

  2. HTTP/2之服务器推送(Server Push)最佳实践

    商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处.   WeTest 导读 HTTP/1.X出色地满足互联网的普遍访问需求,但随着互联网的不断发展,其性能越来越成为瓶颈.IETF在2015 ...

  3. 脑残式网络编程入门(四):快速理解HTTP/2的服务器推送(Server Push)

    本文原作者阮一峰,作者博客:ruanyifeng.com. 1.前言 新一代HTTP/2 协议的主要目的是为了提高网页性能(有关HTTP/2的介绍,请见<从HTTP/0.9到HTTP/2:一文读 ...

  4. javascript跨域传递消息 / 服务器实时推送总结

    参考文档,下面有转载[非常好的两篇文章]: http://www.cnblogs.com/loveis715/p/4592246.html [跨源的各种方法总结] http://kb.cnblogs. ...

  5. 用c#开发微信 (4) 基于Senparc.Weixin框架的接收事件推送处理 (源码下载)

    本文讲述使用Senparc.Weixin框架来快速处理各种接收事件推送.这里的消息指的是传统的微信公众平台消息交互,微信用户向公众号发送消息后,公众号回复消息给微信用户.包括以下类型: 1 subsc ...

  6. C#微信公众号开发系列教程五(接收事件推送与消息排重)

    微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) C#微信公众号开发系列教程三(消息体签名及加解密) C ...

  7. HTML5 WebSocket 实时推送信息测试demo

    测试一下HTML5的websocket功能,实现了客户端→服务器实时推送信息到客户端,包括推送图片: websocket实现MessageInbound类 onTextMessage()/onBina ...

  8. C#微信公众号开发系列教程(接收事件推送与消息排重)

    微信服务器在5秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次.这样的话,问题就来了.有这样一个场景:当用户关注微信账号时,获取当前用户信息,然后将信息写到数据库中.类似于pc端网站的注册.可 ...

  9. 微信公众号开发C#系列-7、消息管理-接收事件推送

    1.概述 在微信用户和公众号产生交互的过程中,用户的某些操作会使得微信服务器通过事件推送的形式通知到开发者在开发者中心处设置的服务器地址,从而开发者可以获取到该信息.其中,某些事件推送在发生后,是允许 ...

随机推荐

  1. Light OJ 1199 - Partitioning Game (博弈sg函数)

    D - Partitioning Game Time Limit:4000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu ...

  2. 【读书笔记】读《JavaScript设计模式》之代理模式

    一.定义 代理是一个对象,它可以用来控制对另一个对象的访问.它与另外那个对象实现了同样的接口,并且会把任何方法调用传递给那个对象.另外那个对象通常称为本体.代理可以代替其实体被实例化,并使其可被远程访 ...

  3. svn分支管理进行迭代开发

    [root@ok svndata]# svn co svn://192.168.1.111/app01 # checkout项目到本机 开始规划我们的svn项目目录: [root@ok svndata ...

  4. show processlist

    mysql> show processlist; #mysql服务器查看有那些主机连进来,并列出它们查什么库 +-----+------+-----------+------+--------- ...

  5. hdu 4033 二分几何

    参考:http://blog.csdn.net/libin56842/article/details/26618129 题意:给一个正多边形内点到其他顶点的距离(逆时针给出),求正多边形的边长 二分多 ...

  6. Visual Studio从此走入非Windows程序猿家

    (此文章同时发表在本人微信公众号"dotNET每日精华文章") 在Build 2015大会上,微软放了很多大招,其中一个让普通(不管是微软生态还是非微软生态的)程序猿都密切关注的就 ...

  7. pagefile.sys and heberfil.sys

    dub 删除heberfil.sys大文件的方法 方法1:Windows/system32中的cmd.exe  输入 powercfg -h off,即可关闭休眠功能,同时 Hiberfil.sys ...

  8. 我与C++的不解情缘

    我是一个老实人,我当时报考C++真的全心是为了自己自考的免考,绝不是为了什么二级证,可是,进行到一半的时候,突然获悉,C++自我们这次开始,不作为免考科目了,当时我的心里啊,那个纠结,那个痛啊,随后, ...

  9. Selenium测试规划

    开源工具经过近几年的发展,已经出现了一大批成熟的可应用到实际项目中的产品,其中,在WEB自动化测试领域,Selenium支持广泛的浏览器和脚本开发语言,高效的执行效率,获得广泛的应用. 本课程结合Se ...

  10. easyui的combobox下拉框初始化默认值以及保持该值一直显示的方法

    easyui的combobox下拉框默认初始值是空,下面是实现从远程加载数据之后初始化默认值,以及让该值一直排在下拉框的最顶部的方式. 目前的需求是需要在初始化的时候添加"全部数据库&quo ...