html5:服务器事件推送(server-sent events)Asp.net
支持
不支持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的更多相关文章
- HTML5服务器消息推送(java版)
前端代码(html5.html): <html> <meta http-equiv="Content-Type" content="text/html; ...
- HTTP/2之服务器推送(Server Push)最佳实践
商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. WeTest 导读 HTTP/1.X出色地满足互联网的普遍访问需求,但随着互联网的不断发展,其性能越来越成为瓶颈.IETF在2015 ...
- 脑残式网络编程入门(四):快速理解HTTP/2的服务器推送(Server Push)
本文原作者阮一峰,作者博客:ruanyifeng.com. 1.前言 新一代HTTP/2 协议的主要目的是为了提高网页性能(有关HTTP/2的介绍,请见<从HTTP/0.9到HTTP/2:一文读 ...
- javascript跨域传递消息 / 服务器实时推送总结
参考文档,下面有转载[非常好的两篇文章]: http://www.cnblogs.com/loveis715/p/4592246.html [跨源的各种方法总结] http://kb.cnblogs. ...
- 用c#开发微信 (4) 基于Senparc.Weixin框架的接收事件推送处理 (源码下载)
本文讲述使用Senparc.Weixin框架来快速处理各种接收事件推送.这里的消息指的是传统的微信公众平台消息交互,微信用户向公众号发送消息后,公众号回复消息给微信用户.包括以下类型: 1 subsc ...
- C#微信公众号开发系列教程五(接收事件推送与消息排重)
微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) C#微信公众号开发系列教程三(消息体签名及加解密) C ...
- HTML5 WebSocket 实时推送信息测试demo
测试一下HTML5的websocket功能,实现了客户端→服务器实时推送信息到客户端,包括推送图片: websocket实现MessageInbound类 onTextMessage()/onBina ...
- C#微信公众号开发系列教程(接收事件推送与消息排重)
微信服务器在5秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次.这样的话,问题就来了.有这样一个场景:当用户关注微信账号时,获取当前用户信息,然后将信息写到数据库中.类似于pc端网站的注册.可 ...
- 微信公众号开发C#系列-7、消息管理-接收事件推送
1.概述 在微信用户和公众号产生交互的过程中,用户的某些操作会使得微信服务器通过事件推送的形式通知到开发者在开发者中心处设置的服务器地址,从而开发者可以获取到该信息.其中,某些事件推送在发生后,是允许 ...
随机推荐
- 【USACO】milk3
倒牛奶的问题, 开始看感觉跟倒水的问题很像, 想直接找规律, 写个类似于循环取余的代码. 但后来发现不行,因为这道题有三个桶,水量也是有限制的.只好用模拟的方法把所有的情况都试一遍. 建一个state ...
- git revert 用法
git revert 撤销 某次操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销作为一次最新的提交 * git revert HEAD ...
- 【ASP.NET MVC】个人复习整理
1.为 Action 标注 Attribute 限制访问 public class HomeController : Controller { [HttpPost] public ActionResu ...
- Linux Top
http://www.it165.net/os/html/201402/7262.html
- hdu 4003 树形dp+分组背包 2011大连赛区网络赛C
题意:求K个机器人从同一点出发,遍历所有点所需的最小花费 链接:点我 Sample Input 3 1 1 //3个点,从1出发,1个机器人 1 2 1 1 3 1 3 1 2 1 2 1 1 3 1 ...
- Linux下打包压缩war和解压war包
Linux下打包压缩war和解压war包 unzip是一种方法,如果不行则采用下面的方法 把当前目录下的所有文件打包成game.war jar -cvfM0 game.war ./ -c 创建wa ...
- matlab练习程序(透视投影,把lena贴到billboard上)
本练习程序是受到了这个老外博文的启发,感觉挺有意思,就尝试了一下.他用的是opencv,我这里用的是matlab. 过去写过透视投影,当时是用来做倾斜校正的,这次同样用到了透视投影,不过更有意思,是将 ...
- eclispe报错PermGen space
最近使用eclipse做开发,使用的服务器是tomcat,但在启动时报了Caused by: java.lang.OutOfMemoryError: PermGen space的异常. 这个错误很常见 ...
- ClassLoader类加载机制
一.类加载器 类加载器(ClassLoader),顾名思义,即加载类的东西.在我们使用一个类之前,JVM需要先将该类的字节码文件(.class文件)从磁盘.网络或其他来源加载到内存中,并对字节码进行解 ...
- Visual Studio提示Bonjour backend初始化失败
Visual Studio提示Bonjour backend初始化失败 错误信息:The Bonjour backend failed to initialize, automatic Mac Bui ...