您现在的位置是:网站首页> 编程资料编程资料
浅析HTML5的WebSocket与服务器推送事件HTML5+WebSocket实现多文件同时上传的实例HTML5-WebSocket实现聊天室示例HTML5实现WebSocket协议原理浅析html5的websockets全双工通信详解学习示例利用html5的websocket实现websocket聊天室html5-websocket基于远程方法调用的数据交互实现基于HTML5的WebSocket的实例代码
2021-08-31
1119人已围观
简介 这篇文章主要介绍了浅析HTML5的WebSocket与服务器推送事件,WebSocket API最大的特点就是让服务器和客户端能在给定的时间范围内的任意时刻,相互推送信息,需要的朋友可以参考下
WebSockets
Web Sockets 是用于 Web 应用程序的新一代双向通信技术,运行在单一套接字之上,它通过 JavaScript 接口暴漏在 HTML5 兼容的浏览器中。
一旦取得 Web 服务器上的 Web Socket 连接之后,就可以通过调用 send() 方法从浏览器发送数据到服务器上,通过 onmessage 事件处理程序从服务器接收数据到浏览器中。
下面是创建一个新的 WebSocket 对象的 API。
- var Socket = new WebSocket(url, [protocal] );
第一个参数 url 用于指定要连接的 URL。第二个属性 - 端口是可选的,如果提供,就会指定一个服务器必须支持连接成功的子协议。
WebSocket 属性
下面是 WebSocket 对象的属性。假定我们已经创建了上述的 Socket 对象:
| 属性 | 描述 |
|---|---|
| Socket.readyState | 只读属性readyState表示连接的状态。有以下取值:
|
| Socket.bufferedAmount | 只读属性bufferedAmount表示已经使用 send() 方法排队的 URF-8 文本字节数。 |
WebSocket 事件
下面是 WebSocket 对象相关的事件。假定我们已经创建了上述的 Socket 对象:
| 事件 | 事件处理程序 | 描述 |
|---|---|---|
| open | Socket.onopen | 建立 socket 连接时触发这个事件。 |
| message | Socket.onmessage | 客户端从服务器接收数据时触发。 |
| error | Socket.onerror | 连接发生错误时触发。 |
| close | Socket.onclose | 连接被关闭时触发。 |
WebSocket 方法
下面是 WebSocket 对象相关的方法。假定我们已经创建了上述的 Socket 对象:
| 方法 | 描述 |
|---|---|
| Socket.send() | send(data) 方法使用连接传输数据。 |
| Socket.close() | close() 方法用于终止任何现有连接。 |
服务器推送事件
传统的 Web 应用程序生成发送到 Web 服务器端的事件。比如,点击一个链接会从服务器请求一个新页面。
这种从 Web 浏览器到 Web 服务器的时间类型可以称作客服端事件。
随着 HTML5 的出现,WHATWG Web Applications 1.0 引入了一个从 Web 服务器到 Web 浏览器的事件流,被称作服务器推送事件(SSE)。使用 SSE 可以不停的将 DOM 事件推送到用户的浏览器中。
这个事件流方法会打开一个到服务器的持久连接,新消息可用时发送数据到客户端,从而不再需要持续的轮询。
SSE Web 应用程序
要在 Web 应用程序中使用服务器推送事件,我们需要给文档添加一个
这个 URL 将会指向一个持续发送事件数据的 PHP,PERL 或者任意 Python 脚本。下面是一个简单的期望获得服务器时间的 Web 应用程序示例。
- >
- <html>
- <head>
- <script type="text/javascript">
- /* Define event handling logic here */
- script>
- head>
- <body>
- <div id="sse">
- <eventsource src="/cgi-bin/ticker.cgi" />
- div>
- <div id="ticker">
- <TIME>
- div>
- body>
- html>
SSE 服务器端脚本
服务器端脚本应该发送 Content-type 头指定类型为 text/event-stream,如下所示:
设置 Content-type 之后,服务器端脚本将发送一个后面紧跟事件名称的 Event: 标签。下面的示例将会发送一个以换行符结束的 Server-Time 作为事件名称。
最后一步是使用 Data: 标签发送事件数据,紧随其后的是以换行符结束的整数字符串值,如下所示:
print "Data: $time\n";
下面是用 perl 编写的完整 ticker.cgi:
#!/usr/bin/perl
print "Content-Type: text/event-stream\n\n";
while(true){
print "Event: server-time\n";
$time = localtime();
print "Data: $time\n";
sleep(5);
处理服务器推送事件
让我们修改一下我们的 Web 应用程序来处理服务器推送时间。下面是最终示例:
- >
- <html>
- <head>
- <script type="text/javascript">
- document.getElementsByTagName("eventsource")[0].
- addEventListener("server-time", eventHandler, false);
- function eventHandler(event)
- {
- // Alert time sent by the server
- document.querySelector('#ticker').innerHTML = event.data;
- }
- script>
- head>
- <body>
- <div id="sse">
- <eventsource src="/cgi-bin/ticker.cgi" />
- div>
- <div id="ticker" name="ticker">
- [TIME]
- div>
- body>
- html>
在测试服务器推送事件之前,建议你确保你的 Web 浏览器支持这一概念。
相关内容
- 在HTML5中使用MathML数学公式的简单讲解基于HTML5的数学函数图形绘制插件XCalc源码用HTML5中的Canvas结合公式绘制粒子运动的教程
- 全面解析HTML5中的标准属性与自定义属性详解HTML5 data-* 自定义属性HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)html5的自定义data-*属性与jquery的data()方法的使用HTML5的自定义属性data-*详细介绍和JS操作实例HTML5自定义data-* data(obj)属性和jquery的data()方法的使用HTML5自定义属性的问题分析
- 简单整理HTML5的基本特性和语法HTML学习笔记--HTML的语法详解(必看)详解HTML&CSS&JavaScript语法辞典-(专业版) (半场方人) PDF扫描版 93.1Html5 语法与规则简要概述HTML5的语法变化介绍HTML5 新旧语法标记对我们有什么好处HTML语法大全_html语言语法大全(必看)
- HTML5实现预览本地图片 HTML5本地存储之IndexedDBhtml5中localStorage本地存储的简单使用HTML5 LocalStorage 本地存储刷新值还在详解HTML5 LocalStorage 本地存储 html5本地存储 localStorage操作使用详解Html5 web本地存储实例详解深入剖析webstorage[html5的本地数据处理]HTML5本地存储之Web Storage详解HTML5 本地存储 LocalStorage详解HTML5本地数据库基础操作详解
- HTML5新特性之用SVG绘制微信logo HTML5新特性之type=file文件上传功能HTML5新特性之语义化标签整理HTML5的一些新特性与Canvas的常用属性基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作HTML5 history新特性pushState、replaceState及两者的区别 HTML5有哪些新特征Html5新特性用canvas标签画多条直线附效果截图html5声频audio和视频video等新特性详细说明html5新特性与用法大全
- HTML5 Canvas入门学习教程HTML5中的nav标签学习笔记HTML5学习笔记之html5与传统html区别 HTML 5零距离接触:学习快速入门 中文pdf扫描版[1MB]HTML5学习心得总结(推荐)
- HTML5 canvas实现移动端上传头像拖拽裁剪效果html5拖拽排序多图片上传插件特效源码HTML5 拖拽批量上传文件的示例代码html5实现多图片预览上传及点击可拖拽控件html5使用Drag事件编辑器拖拽上传图片的示例代码HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)结合html5+nodejs+express实现拖拽上传的功能HTML5拖拽文件到浏览器并实现文件上传下载功能代码html5 拖拽上传图片实例演示HTML5拖拽文件上传的示例代码
- html5 canvas移动浏览器上实现图片压缩上传使用canvas压缩图片上传的方法示例浅析图片上传及canvas压缩的流程
- html5+css3进度条倒计时动画特效代码【推荐】html5带音乐背景的圣诞节倒计时页面代码基于HTML5 time元素的倒计时jquery插件HTML5 Canvas 3D倒计时爆炸特效源码基于Html5+Canvas实现2016年七夕情人节倒计时特效源码基于HTML5 canvas圆形倒计时器jQuery插件源码 多款效果基于HTML5实现2021雪花飘新年倒计时源码
- 多视角3D逼真HTML5水波动画 HTML5 canvas实现雪花飘落特效HTML5实现波浪滚动起伏动画特效源码HTML5+SVG实现盒子爆炸动画特效源码 HTML5+Canvas实现日期圆形时钟特效源码HTML5实现多视角3D逼真水波动画 HTML5的新特性(1) HTML5 Canvas实现烟花绽放特效HTML5实现Notification API桌面通知功能 多视角3D可旋转的HTML5 Logo动画html5+css3进度条倒计时动画特效代码【推荐】
