一、前台

<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实例的更多相关文章

  1. 最近学习工作流 推荐一个activiti 的教程文档

    全文地址:http://www.mossle.com/docs/activiti/ Activiti 5.15 用户手册 Table of Contents 1. 简介 协议 下载 源码 必要的软件 ...

  2. Hibernate(3)——实例总结Hibernate对象的状态和ThreadLoacl封闭的session

    俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及的知识点总结如下: Hibernate的内部执行过程(CRUD) 对象的状态及其转换图和例子 使用JUnit测试 使用getCur ...

  3. JVM学习(1)——通过实例总结Java虚拟机的运行机制

    俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及到的知识点总结如下: JVM的历史 JVM的运行流程简介 JVM的组成(基于 Java 7) JVM调优参数:-Xmx和-Xms ...

  4. Web端即时通讯技术盘点:短轮询、Comet、Websocket、SSE

    1. 前言 Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Serve ...

  5. SSE:服务器发送事件,使用长链接进行通讯

    概述 传统的网页都是浏览器向服务器“查询”数据,但是很多场合,最有效的方式是服务器向浏览器“发送”数据.比如,每当收到新的电子邮件,服务器就向浏览器发送一个“通知”,这要比浏览器按时向服务器查询(po ...

  6. 【转】【SSE】基于SSE指令集的程序设计简介

    基于SSE指令集的程序设计简介 作者:Alex Farber 出处:http://www.codeproject.com/cpp/sseintro.asp SSE技术简介 Intel公司的单指令多数据 ...

  7. 【转】【SEE】基于SSE指令集的程序设计简介

    SSE技术简介 Intel公司的单指令多数据流式扩展(SSE,Streaming SIMD Extensions)技术能够有效增强CPU浮点运算的能力.Visual Studio .NET 2003提 ...

  8. 机器学习实战5:k-means聚类:二分k均值聚类+地理位置聚簇实例

    k-均值聚类是非监督学习的一种,输入必须指定聚簇中心个数k.k均值是基于相似度的聚类,为没有标签的一簇实例分为一类. 一 经典的k-均值聚类 思路: 1 随机创建k个质心(k必须指定,二维的很容易确定 ...

  9. 转:SSE:服务器发送事件

    原文来自于:http://javascript.ruanyifeng.com/htmlapi/eventsource.html 目录 概述 客户端代码 概述 建立连接 open事件 message事件 ...

随机推荐

  1. linux下部署jdk+Tomcat

    部署jdk (如果是普通用户,先切换到管理员 su root) 1.下载jdk压缩包 2.用xftp将jdk压缩包传输 /opt 目录下 3.解压(在/opt 目录下对压缩包解压) tar -xzvf ...

  2. 将16进制的颜色转为rgb颜色

    在前端面试过程中,常常会遇到这样一种类型的题目: 使用js将16进制的颜色值转为rgb颜色! 反而在项目中,不怎么遇到这种问题,也很少有这种需求的项目. 但毕竟面试中常常遇到,我自己在之前的面试的时候 ...

  3. Docker Basic

    1.简介 last 1.简介 1.1目的?一次编译.到处运行: 1.2.是什么? 实现[运行环境和配置文件的]软件容器,方便[持续集成]实现[整体发布]的容器虚拟化技术: 概括:整体发布的[容器虚拟化 ...

  4. 安装python的jupyter notebook工具

    jupyter notebook是一个通过网页运行python的工具 支持分段的python运行,并能直观的查看结果 支持多python环境运行,需要加装(conda) 安装步骤 1.安装python ...

  5. An error was encountered while running(Domain=LaunchSerivcesError, Code=0)

    今天突然遇到这样一个错误,编译可以通过,但是运行就会弹出这个错误提示: An error was encountered while running(Domain=LaunchSerivcesErro ...

  6. 关于php中的exec命令

    这个命令 一般是被禁用的  一些特殊需求的时刻 可以启用 比如 调用系统上的一些数据或者命令 $command ='/www/wwwroot/t.6328.net/Public/cfile/test' ...

  7. nohup top & 问题: top: failed tty get

    执行 nohup top & nohup.out 显示 top: failed tty get +++++++++++++++++ top后台执行显示:top: failed tty get ...

  8. flex学习笔记-日历选择与显示

    <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...

  9. redis 做默认缓存

    配置: server.port= # REDIS (RedisProperties) # Redis\u6570\u636E\u5E93\u7D22\u5F15\uFF08\u9ED8\u8BA4\u ...

  10. leetcode540

    这道题目的要求,Note: Your solution should run in O(log n) time and O(1) space. 因此应该用二分查找的方式,代码如下: class Sol ...