server-sent-event使用流信息向客户端发送数据

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>server-sent-event</title>
</head>
<body>
<div>
<p>server-sent-event 是一种服务器向客户端发送消息的单向通信方式,采用流信息传送数据,类似视频播放,一直保持和客户端的连接,不断地发送数据。</p>

<p>SSE 使用 HTTP 协议,现有的服务器软件都支持。WebSocket 是一个独立协议。</p>
<p>SSE 属于轻量级,使用简单;WebSocket 协议相对复杂。</p>
<p>SSE 默认支持断线重连,WebSocket 需要自己实现。</p>
<p>SSE 一般只用来传送文本,二进制数据需要编码后传送,WebSocket 默认支持传送二进制数据。</p>
<p>SSE 支持自定义发送的消息类型。</p>

<script>
    if(‘EventSource‘ in window){
        console.log("支持EventSource");
        var es = new EventSource("http://localhost:3009/stream");
        es.onopen = function(){
            console.log("连接成功");
        }
        es.onmessage = function(message){   //默认是message事件,
            console.log("接收到数据",message);
        }
        es.onerror = function(err){
            console.log("error",err);
        }

        es.addEventListener("connecttime",function(event){ //监听自定义事件
            console.log(‘监听自定义事件‘,event);
        },false);

    }

</script>
</div>
</body>
</html>

  

基于node 的服务端代码

var http = require("http");

http.createServer(function(req,res){
    console.log(req.url);
    var filename = ‘.‘+req.url;
    if(filename===‘./stream‘){
        res.writeHead(200,{
            "Content-Type":"text/event-stream",
            "Cache-Control":"no-cache",
            "Connection":"keep-alive",
            "Access-Control-Allow-Origin": ‘*‘,
        });

        res.write("retry: 10000\n");
        res.write("event: connecttime\n");
        res.write("data: "  + "来自自定义事件的数据\n\n");
        res.write("data: "  + "自定义事件\n\n");

        interval = setInterval(function () {  //event 字段未设置的,默认为message事件
          res.write("data: " + (new Date()) + "\n\n");
        }, 1000);

        req.connection.addListener("close", function () {
          clearInterval(interval);
        }, false);

    }

}).listen(3009,"127.0.0.1");
console.log("server start at port 3009");

  

时间: 2024-10-06 00:10:53

server-sent-event使用流信息向客户端发送数据的相关文章

uip UDP 服务器广播模式(客户端可以任意端口,并且主动向客户端发送数据)

目前移植uip,发现UDP 服务器模式下,必须指定本地端口以及客户端端口,否则只能讲客户端端口设置为0,才能接收任意端口的数据,但是无法发送数据,因为此时客户端端口设置为0了,我通过将原始数据包中的客户端端口保存下来,并且在发送的时候将客户端端口替换为指定的端口,发送完成之后又设置为0,这样就实现了向任意客户端端口发送数据. uip.c if(uip_udp_conn->lport != 0 && UDPBUF->destport == uip_udp_conn->lpo

服务器向客户端发送数据自动中断

问题现象: 客户端接收服务器端数据出现假死现象. 环境描述: 1.      客户端是window程序 2.      服务器端是Linux程序 3.      服务器端程序和客户端程序采用TCP进行通讯 问题分析: 1.      首先,客户端上进行抓包,对其数据包进行分析,发现服务器端发送的数据总是不完全 2.      其次,服务器上进行抓包,发现发送一会儿后,发送端的TCP窗口满了,导致数据溢出,发送的数据都是错误的数据包 3.      从服务器上的数据包分析发现,由于客户端处理速度过

SSH服务器与Android通信(3)--Android客户端发送数据

Android客户端向SSH服务器发送数据主要有三种情况:通过客户端删除数据.添加数据和修改数据. 1.删除数据 先看看jsp文件里面是怎样删除数据的: <td align="center"><a href="clasdelete.action?id=<s:property value='#st.id'/>" onclick="if(!window.confirm('是否删除'))return false;" >

android socket 通讯(客户端) 发送数据

/** ClientSocket通讯类 **/ public class ClientSocket  { /**服务器地址*/ private String serverUrl="192.168.124.214"; /**服务器端口*/ private int serverPort=8888; /*发送命令线程*/ class sendCommandThread extends Thread{ private String command; public sendCommandThre

单点登录CAS与Spring Security集成(数据库验证,向客户端发送更多信息)

准备工作 CAS server从网上直接下载下来,里面有一个cas-server-webapp的工程,使用Maven命令构建,导入到Eclipse中,便可以直接使用,cas server我使用的是3.5.2版本.客户端,我是使用以前的工程,只要是Web工程就行,cas-client使用的3.2.1,Spring Security使用的是3.1.4,记得Spring Security的3.1.2版本和CAS集成时,当需要CAS Server传比较多的信息给客户端时,客户端的Spring Secur

server sent event

服务器发送事件(SSE),数据推送,从服务器端推送到客户端,服务器端一发送数据,客户端就会收到并显示.webSockets是全双工socket. 我使用node做服务器端. 客户端js代码: var source = new EventSource('/eventResource'); source.onmessage = function(e) { document.body.innerHTML += e.data; }; 服务器端代码: app.get('/eventResource', f

node中一个基本的HTTP客户端向本地的HTTP服务器发送数据

上一篇讲到了node可以轻松的向其他请求数据. 这一篇就来讲讲向本地服务器的数据交互. HTTP服务器代码,s.js 1 var http=require("http"); 2 var server=http.createServer(function(req,res){ 3 if(req.url!=="/favicon.ico"){ 4 req.on("data",function(data){ 5 console.log("服务器接

Lync server 2013高可用环境快速查看客户端的版本信息及连接状态

我们在进行Lync server 2013高可用部署的项目中,有一些用户会提出一些要求,比如:我是否能查看哪些客户端连接在哪台Lync Server 2013前端.前端是否达到了高可用的效果.客户端连接的版本信息等- - 针对以上客户提出的要求我们可以通过以下方法来实现: 准备工作: 1. 下载脚本文件:get-csconnections.ps1 2. 打开Lync server 2013前端到SQL之间的端口:1434 操作过程: 1. 将脚本文件拷贝到Lync server 2013 前端服

Tomcat下conf下server.xml的文件配置信息

Tomcat下conf下server.xml的文件配置信息,基本上不用做任何修改就可以使用,修改的地方就是host区域的一些配置,此文件设置端口为80. 注意:Tomcat配置文件中(即server.xml文件)不能出现中文,否则服务是无法启动的. [xhtml] view plaincopy <!-- Server中的port监听关闭tomcat的请求,shutdown指定向端口发送的命令串--> <Server port="8005" shutdown="