sse实例
一、前台
<script>//D:\wamp\www\node\xiangmuer\views\main
// var source = new EventSource('http://127.0.0.1:1111/api/ceshi');
function GetQueryString(name)
{
var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if(r!=null)return unescape(r[2]); return null;
}
$(function(){
$(".title").html(decodeURI(escape(GetQueryString('title'))));
var source = new EventSource("/app/index.php?i="+GetQueryString('i')+"&j=11&c=entry&rid="+GetQueryString('rid')+"&do=daping_show_api&m=fm_photosvote");
//var div = document.getElementById('example');
source.onopen = function (event) {
console.log(event)
//div.innerHTML += '<p>Connection open ...</p>';
};
source.onerror = function (event) {
console.log(event)
//div.innerHTML += '<p>Connection close.</p>';
};
source.addEventListener('connecttime', function (event) {
console.log(event)
//div.innerHTML += ('<p>Start time: ' + event.data + '</p>');
}, false);
source.onmessage = function (event) {//返回成功的
//div.innerHTML += ('<p>Ping: ' + event.data + '</p>');
//cons(event);
var daList=event.data;
var daListJs= JSON.parse(daList);
$("#list").html('');
for(var i=0;i<daListJs.length;i++){
var new_zhi = daListJs[i].photosnum
var max = daListJs[i].max
var width = new_zhi/max *100 +'%'
var html ='<li class="clearfix">'
html+='<div class="tem">'+daListJs[i].realname+'</div>'
html+='<div class="barBox">'
html+='<div class="bar" style="width:'+width+'">'+daListJs[i].photosnum+'</div>'
html+='<i></i></div></li>'
$(html).appendTo("#list");
}
};
})
</script>
二:后台php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache'); // 建议不要缓存SSE数据
global $_GPC,$_W;
$rid=(int)($_GPC['rid']);
$list=pdo_fetchall("SELECT photosnum+xnphotosnum as photosnum,realname from ".tablename('fm_photosvote_provevote')." where rid=$rid order by photosnum desc");
$listt=pdo_fetchall('select MAX(photosnum+xnphotosnum) from '.tablename('fm_photosvote_provevote')." where rid=$rid");
$max=$listt[0]['MAX(photosnum+xnphotosnum)'];
foreach ($list as &$value) {
$value['max']=$max;
}
$list=json_encode($list);
$time = date('Y-m-d H:i:s');
echo 'retry: 1000'.PHP_EOL;//返回时间间隔
echo 'data:'.($list).PHP_EOL.PHP_EOL;
node.js端后台
router.get('/ceshi',function(req,res,next){
res.writeHead(200, {
"Content-Type":"text/event-stream",
"Cache-Control":"no-cache",
"Connection":"keep-alive",
"Access-Control-Allow-Origin": '*',
});
res.write("retry: 10000");
res.write("retry: 10000");
res.write("retry: 10000");
res.write("retry: 10000");
// interval = setInterval(function () {
// res.write("data: " + (new Date()) + "\n\n");
// }, 1000);
//res.send('uapi你妹');
});
sse实例的更多相关文章
- 最近学习工作流 推荐一个activiti 的教程文档
全文地址:http://www.mossle.com/docs/activiti/ Activiti 5.15 用户手册 Table of Contents 1. 简介 协议 下载 源码 必要的软件 ...
- Hibernate(3)——实例总结Hibernate对象的状态和ThreadLoacl封闭的session
俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及的知识点总结如下: Hibernate的内部执行过程(CRUD) 对象的状态及其转换图和例子 使用JUnit测试 使用getCur ...
- JVM学习(1)——通过实例总结Java虚拟机的运行机制
俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及到的知识点总结如下: JVM的历史 JVM的运行流程简介 JVM的组成(基于 Java 7) JVM调优参数:-Xmx和-Xms ...
- Web端即时通讯技术盘点:短轮询、Comet、Websocket、SSE
1. 前言 Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Serve ...
- SSE:服务器发送事件,使用长链接进行通讯
概述 传统的网页都是浏览器向服务器“查询”数据,但是很多场合,最有效的方式是服务器向浏览器“发送”数据.比如,每当收到新的电子邮件,服务器就向浏览器发送一个“通知”,这要比浏览器按时向服务器查询(po ...
- 【转】【SSE】基于SSE指令集的程序设计简介
基于SSE指令集的程序设计简介 作者:Alex Farber 出处:http://www.codeproject.com/cpp/sseintro.asp SSE技术简介 Intel公司的单指令多数据 ...
- 【转】【SEE】基于SSE指令集的程序设计简介
SSE技术简介 Intel公司的单指令多数据流式扩展(SSE,Streaming SIMD Extensions)技术能够有效增强CPU浮点运算的能力.Visual Studio .NET 2003提 ...
- 机器学习实战5:k-means聚类:二分k均值聚类+地理位置聚簇实例
k-均值聚类是非监督学习的一种,输入必须指定聚簇中心个数k.k均值是基于相似度的聚类,为没有标签的一簇实例分为一类. 一 经典的k-均值聚类 思路: 1 随机创建k个质心(k必须指定,二维的很容易确定 ...
- 转:SSE:服务器发送事件
原文来自于:http://javascript.ruanyifeng.com/htmlapi/eventsource.html 目录 概述 客户端代码 概述 建立连接 open事件 message事件 ...
随机推荐
- MySQL提供了以下三种方法用于获取数据库对象的元数据
MySQL提供了以下三种方法用于获取数据库对象的元数据: 1)show语句 2)从INFORMATION_SCHEMA数据库里查询相关表 3)命令行程序,如mysqlshow, mysqldump 用 ...
- python-模块的导入import
#-*- coding:utf-8 -*- #本次学习:模块的导入 ''' 1.模块名不能与第三方库或者本地库名字重名/冲突 2.导入模块时,寻找顺序:现在当前目录找,再去我们环境变量配置的pytho ...
- django之模板系统 --》内容(filter过滤器、tags标签【for、if、with】、母板以及继承、crf_token、注释、组件、静态文件【load static】、get_static_prefix、自定义标签和tag)
常用: Django模板中只需要记两种特殊符号: {{ }}和 {% %} {{ }}表示变量,在模板渲染的时候替换成值,{% %}表示逻辑相关的操作. 变量 {{ 变量名 }} 变量名由字母数字和下 ...
- python2.7与3.5版本中:编码格式及编码转换
主要说明编码之间的转换方法 2.7版本: 1 # -*- coding:utf-8 -*- 2 a = "迪丽热巴" 3 a_unicode = a.decode("ut ...
- windows定时关机命令
at 11:00 shutdown.exe -s -t 120 https://jingyan.baidu.com/article/574c52191ea9996c8c9dc17a.html?st=2 ...
- spark基础知识介绍(包含foreachPartition写入mysql)
数据本地性 数据计算尽可能在数据所在的节点上运行,这样可以减少数据在网络上的传输,毕竟移动计算比移动数据代价小很多.进一步看,数据如果在运行节点的内存中,就能够进一步减少磁盘的I/O的传输.在spar ...
- Linux查看系统中socket状态
当我们打开的socket数量很多时,netstat就会变得慢了,有什么办法可以快速查看系统中socket状态? IPv4: $ cat /proc/net/sockstat sockets: used ...
- 火狐Firefox浏览器所有历史版本下载地址
Mozilla Firefox 频繁的更新,导致许多好用的插件在更新后不能兼容,而且想换回低版本还不容易啊,官网上只看到最新版本和前一个版本的下载. 这里为大家提供了一个下载链接,是来自Mozilla ...
- get return value of python in shell
from: https://stackoverflow.com/questions/2115615/assigning-value-to-shell-variable-using-a-function ...
- ThinkPHP子类继承Controller类的注意事项
在实际的开发中,往往有很多子类都继承自同一个父类,然后该父类再继承自框架内置类的需求. 比如: class Init extends Controller{...} class son1 extend ...