<!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");

  

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

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

    Android客户端向SSH服务器发送数据主要有三种情况:通过客户端删除数据.添加数据和修改数据. 1.删除数据 先看看jsp文件里面是怎样删除数据的: <td align="cent ...

  2. C#模拟客户端发送数据示例

      在给一些客户端做服务器端支持时,发现他们提交上来的数据大都不是http请求格式,因而使用Request.Form获取不到内容,今天用C#做下模拟,并演示下数据接收. 1.发送文本 1).客户端发送 ...

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

    /** ClientSocket通讯类 **/  public class ClientSocket  {     /**服务器地址*/     private String serverUrl=&q ...

  4. TCP实现多个客户端发送数据给服务器端

    SocketThread给服务端用的线程类: public class SocketThread extends Thread{ private Socket socket; public Socke ...

  5. python使用socket向客户端发送数据的方法

    在使用locust测试长连接的时候,所有的请求全部faillure了,所以想到手动写一个连接脚本测试一下是否能连通 因为centos7自带python2.7所以用python写一个比较方便. #!/u ...

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

    上一篇讲到了node可以轻松的向其他请求数据. 这一篇就来讲讲向本地服务器的数据交互. HTTP服务器代码,s.js var http=require("http"); var s ...

  7. .NET客户端下载SQL Server数据库中文件流保存的大电子文件方法(不会报内存溢出异常)

    .NET客户端下载SQL Server数据库中文件流保存的大电子文件方法(不会报内存溢出异常) 前段时间项目使用一次性读去SQL Server中保存的电子文件的文件流然后返回给客户端保存下载电子文件, ...

  8. java在线聊天项目0.5版 解决客户端向服务器端发送信息时只能发送一次问题 OutputStreamWriter DataOutputStream socket.getOutputStream()

    没有解决问题之前客户端代码: package com.swift; import java.awt.BorderLayout; import java.awt.Color; import java.a ...

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

    Tomcat下conf下server.xml的文件配置信息,基本上不用做任何修改就可以使用,修改的地方就是host区域的一些配置,此文件设置端口为80. 注意:Tomcat配置文件中(即server. ...

随机推荐

  1. JS之脚本延迟

    自从开了博客,我就一下班回来匆匆吃完饭门一关等一开电脑一打开匆匆的研究东西,以至于朋友们都怀疑我是不是都得了自闭症 其实因为我有恐惧心理怕自己的技术哪天跟不上社会了,说到技术我觉得技术不求越新越好,但 ...

  2. 初识 JShell

    Java9 现在吵得热火朝天,赶紧顺势学习一波喽! JDK9 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk9-dow ...

  3. 第4章 同步控制 Synchronization ----信号量(Semaphore)

    许多文件中都会提到 semaphores(信号量),因为在电脑科学中它是最具历史的同步机制.它可以让你陷入理论的泥淖之中,教授们则喜欢问你一些有关于信号量的疑难杂 症.你可能不容易找到一些关于 sem ...

  4. LCM Cardinality 暴力

    LCM Cardinality Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit St ...

  5. http://codeforces.com/contest/349

    A. Cinema Line time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...

  6. Python网络编程socket练习(TCP)

    服务器端:server.py # -*- coding: utf-8 -*- from socket import * HOST='' PORT=5000 BUFF_SIZE=1024 ADDR=(H ...

  7. javascript的数值转换 number()详解

    ---恢复内容开始--- number() parseInt() parseFloat()这三个函都可以把数非数值转换为数值,我们看看他们的区别在哪里 一 Number() 转型函数Number()是 ...

  8. Python自学笔记-time模块(转)

    在Python中,通常有这几种方式来表示时间:1)时间戳 2)格式化的时间字符串 3)元组(struct_time)共九个元素.由于Python的time模块实现主要调用C库,所以各个平台可能有所不同 ...

  9. 【转】Python-__builtin__与__builtins__的区别与关系(超详细,经典)

    在学习Python时,很多人会问到__builtin__.__builtins__和builtins之间有什么关系.百度或Google一下,有很 多答案,但是这些答案要么不准确,要么只说了一点点,并不 ...

  10. 翻译连载 | 第 10 章:异步的函数式(下)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇

    原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...