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.概述 在微信用户和公众号产生交互的过程中,用户的某些操作会使得微信服务器通过事件推送的形式通知到开发者在开发者中心处设置的服务器地址,从而开发者可以获取到该信息.其中,某些事件推送在发生后,是允许 ...
随机推荐
- [Android Pro] android Flag介绍
一些Flag的介绍 窗口之后的内容变暗. public static final int FLAG_DIM_BEHIND = 0x00000002; 窗口之后的内容变模糊. public ...
- 原始套接字(SOCK_RAW)
本文转载:http://www.cnblogs.com/duzouzhe/archive/2009/06/19/1506699.html,在此感谢 原始套接字(SOCK_RAW). 应用原始套接字,我 ...
- JS图片延迟加载分析及简单的demo
JS图片延迟加载 图片延迟加载也称 "懒加载",通常应用于图片比较多的网页,比如 "美丽说首页","蘑菇街"等一些导购网站上用的比较多,或者 ...
- 如何开启PostGreSQL的远程访问端口?
用以下办法即可: postgresql默认情况下,远程访问不能成功,如果需要允许远程访问,需要修改两个配置文件,说明如下: 1.postgresql.conf 将该文件中的listen_address ...
- Java Hour 27 Concurrent
有句名言,叫做10000小时成为某一个领域的专家.姑且不辩论这句话是否正确,让我们到达10000小时的时候再回头来看吧. 27 Hours. 本小时主要过一下多线程相关的基本API. Defining ...
- PHP 图片水印类
<?php /** * 加水印类,支持文字图片水印的透明度设置.水印图片背景透明. * $obj = new WaterMask($imgFileName); //实例化对象 * $obj-&g ...
- poj 1811 大数分解
模板 #include<stdio.h> #include<string.h> #include<stdlib.h> #include<time.h> ...
- java中基本输入输出流的解释(flush方法的使用)
转自:http://fsz521job.itpub.net/post/5606/34827 网络程序的很大一部分是简单的输入输出,即从一个系统向另一个系统移动字节.字节就是字节,在很大程度上,读服务器 ...
- Android的onCreateOptionsMenu()创建菜单Menu详解(转)
Android一共有三种形式的菜单: 1.选项菜单(optinosMenu) 2.上下文菜单(ContextMenu) 3.子菜单(s ...
- AutoCompleteTextView自动填充文本
布局: <AutoCompleteTextView android:id="@+id/auto" android:layout_width="match_paren ...