一、前台

<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. hive lateral view 与 explode详解

    ref:https://blog.csdn.net/bitcarmanlee/article/details/51926530 1.explode hive wiki对于expolde的解释如下: e ...

  2. Jscraft 使用 Shell 与预先加载别名混合使用

    Session session = a.getSessionShell("user", "pwd", "host"); Channel ch ...

  3. Java多线程例子

    package rom; import java.awt.image.AreaAveragingScaleFilter; public class Xamle_2 { private static T ...

  4. uuid.uuid4().hex

    uuid.uuid4().hex .hex 将生成的uuid字符串中的 - 删除

  5. PHP + Apche 在 window 系统下的环境搭建

    1, 安装 Apche 服务器, 官方只提供源码,这里推荐三方下载地址 http://www.apachelounge.com/download/ 1.1,下载后解压到自己想要安装的位置, 笔者安装在 ...

  6. python linux 下开发环境搭建

    1.1: 在虚拟环境目录下安装 ipython  => pip install ipython 1.2: 简单的使用 => ipthyon => print("heollo ...

  7. jgGrid pivot reload重新加载及刷新数据

    1.当使用jqGrid进行多维表时,reload方法会不停的重复增加标题的行数. 解决办法:直接删除jqGrid,重新初始化页面. function query(){//crossTable pivo ...

  8. liunx poi excel下载内容乱码本地tomcat正常

    结论:在jsp中加上out.clear即可(前提保证生成的excel在服务器上是正确的,只是浏览器传输才出现乱码). dowload.jsp完整代码 <%@ page language=&quo ...

  9. javascript自定义简单map对象功能

    这里介绍一种js创建简单map对象的方法: function Map() { //创建object对象, 并给object对象添加key和value属性 var obj1=new Object(); ...

  10. leetcode1013

    class Solution(object): def canThreePartsEqualSum(self, A: 'List[int]') -> bool: n = len(A) sums ...