server-sent-event使用流信息向客户端发送数据
2017-06-01 18:08
387 查看
<!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");
相关文章推荐
- 使用 SignalR与SSE(Sever sent event)向客户端推送提示信息
- 服务器实时通知客户端方案,服务器发送/推送事件方案(2)server event,典型例子,可以用作股票、新闻信息推送
- 为什么ServerSocket接收不到客户端Socket发送的信息?
- 在线客户端:使用AJAX发送JSON数据
- 使用客户端软件向服务端php程序发送post数据,php接受三种方法
- python使用socket向客户端发送数据的方法
- Java程序使用httpClient发送Url链接,并获取返回的数据信息
- PB报错: 不能用 DB-Library(如 ISQL)或 ODBC 3.7 或更早版本将 ntext 数据或仅使用 Unicode 排序规则的 Unicode 数据发送到客户端
- 使用TCP协议编写一个网络程序,设置服务器端的监听端口是8002,当与客户端建立连接后,服务器端向客户端发送数据“Hello, world”,客户端收到数据后打印输出。
- 如何使用TCP向远端SERVER传输数据 (发送与接收)
- android端和pc端使用usb进行socket通信,其中android是服务器端,pc是客户端。如何实现安卓端输入的数据通过按钮发送到pc端?
- 使用AIDL实现IPC通信之——实现服务端主动发送数据给客户端
- 发送异步请求获取数据时,不使用客户端浏览器缓存
- socket C/C++编程(6)server之accept()函数创建新socket以单独读取缓存区某个client的连接信息(客户端的IP和端口,但是,不包括client端键入的数据)
- 使用TCP协议编写一个网络程序,设置服务器端的监听端口是8002,当与客户端建立连接后,服务器端向客户端发送数据“Hello, world”,客户端收到数据后打印输出
- 使用DatagramSocket发送、接收数据(2)---server端
- 使用IdTcpClient和IdTcpServer相互发送数据
- 使用Sever与多个客户端同时通信,Server可以接受到所有信息,也可以广播
- 使用TCP协议编写一个网络程序,设置服务器端的监听端口是8002,当与客户端建立连接后,服务器端向客户端发送数据“Hello, world”,客户端收到数据后打印输出。
- Windows Server 2003 使用vSphere5.5连接ESXI5.5 “客户端无法向服务器发送完整的请求” 的解决办法