HTML5超酷新特性WebSockets初体验

简介: 人人网Web前端开发工程师暴风彬彬(网名),在个人网站彬Go上发表了一篇博文《HTML5 WebSockets 基础使用教程》,和大家一起分享了如何利用HTML5超酷新特性WebSockets进行服务器端开发,文中给出了较详细的源代码及图片,现将本文转载于此,供大家借鉴学习:HTML5之中一个很酷的新特性就是WebSockets,它可以让我们无需AJAX请求即可与服务器端对话。

人人网Web前端开发工程师暴风彬彬(网名),在个人网站彬Go上发表了一篇博文《HTML5 WebSockets 基础使用教程》,和大家一起分享了如何利用HTML5超酷新特性WebSockets进行服务器端开发,文中给出了较详细的源代码及图片,现将本文转载于此,供大家借鉴学习:

HTML5之中一个很酷的新特性就是WebSockets,它可以让我们无需AJAX请求即可与服务器端对话。今天彬Go将让大家通过Php环境的服务器端运行WebSocket,创建客户端并通过WebSockets协议发送和接收服务器端信息。

什么是WebSockets?

WebSockets是在一个(TCP)接口进行双向通信的技术,PUSH技术类型。同时WebSockets仍将基于W3C标准,目前为止,Chrome和Safari的最新版本浏览器已经支持WebSockets了。

WebSockets将会替代什么?

WebSockets可以替代Long Polling(PHP服务端推送技术),这是一个有趣的概念。客户端发送一个请求到服务器,现在,服务器端并不会响应还没准备好的数据,它会保持连接的打开状态直到最新的数据准备就绪发送,之后客户端收到数据,然后发送另一个请求。这有它的好处:减少任一连接的延迟,当一个连接已经打开时就不需要创建另一个新的连接。但是Long-Polling并不是什么花俏技术,它仍有可能发生请求暂停,因此会需要建立新的连接。

一些AJAX应用使用上述技术——这经常是归因于低资源利用。

试想一下,如果服务器在早晨会自启动并发送数据到那些希望接收而不用提前建立一些连接端口的客户端,这是一件多棒的事情啊!

第一步:搞定WebSocket服务器

本教程会把更多的精力放在客户端的创建而不是服务器端的执行等操作。

我使用基于windows 7的XAMPP来实现本地运行PHP。phpwebsockets是PHP WebSocket服务器。(以我的经验这个版本存在一些小问题,我已对它做了些修改并上传源文件共享给大家)下面的这些不同版本也可以实现WebSocket,如果某个不能用,你可以试试其它版本或者继续看下面的教程。

jWebSocket (Java)

web-socket-ruby (ruby)

Socket IO-node (node.js)

启动Apache服务器

第二步:修改URLs和端口

根据你之前的安装修改服务器,下面是setup.class.php中的例子:

 
  1. public function __construct($host='localhost',$port=8000,$max=100)    
  2. {    
  3.     $this->createSocket($host,$port);    

浏览文件并在适当情况下进行更改。

第三步:开始创建客户端

下面来创建基本模板,这是我的client.php文件:

 
  1. <!DOCTYPE html>    
  2. <html>    
  3. <head>    
  4. <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>    
  5.     
  6. <title>WebSockets Client</title>    
  7.     
  8. </head>    
  9. <body>    
  10. <div id="wrapper">    
  11.     
  12.     <div id="container">    
  13.     
  14.         <h1>WebSockets Client</h1>    
  15.     
  16.         <div id="chatLog">    
  17.     
  18.         </div><!-- #chatLog -->    
  19.         <p id="examples">e.g. try 'hi''name''age''today'</p>    
  20.     
  21.         <input id="text" type="text" />    
  22.         <button id="disconnect">Disconnect</button>    
  23.     
  24.     </div><!-- #container -->    
  25.     
  26. </div>    
  27. </body>    
  28. </html> 

我们已经创建里基本模板:一个chat log容器,一个input输入框和一个断开连接的按钮。

第四步:添加一些CSS

没什么花俏代码,只是处理一下标签的样式。

 
  1. body {    
  2.     font-family:Arial, Helvetica, sans-serif;    
  3. }    
  4. #container{    
  5.     border:5px solid grey;    
  6.     width:800px;    
  7.     margin:0 auto;    
  8.     padding:10px;    
  9. }    
  10. #chatLog{    
  11.     padding:5px;    
  12.     border:1px solid black;    
  13. }    
  14. #chatLog p {    
  15.     margin:0;    
  16. }    
  17. .event {    
  18.     color:#999;    
  19. }    
  20. .warning{    
  21.     font-weight:bold;    
  22.     color:#CCC;    

第五步:WebSocket事件

首先让我们尝试并理解WebSocket事件的概念:

WebSocket事件:

我们将使用三个WebSocket事件:

onopen:当接口打开时

onmessage: 当收到信息时

onclose:当接口关闭时

我们如何来实现呢?

首先创建WebSocket对象:

 
  1. var socket = new WebSocket("ws://localhost:8000/socket/server/startDaemon.php"); 

然后向下面这样检测事件:

 
  1. socket.onopen = function(){    
  2.     alert("Socket has been opened!");    

当我们收到信息时这样做:

 
  1. socket.onmessage = function(msg){    
  2.     alert(msg); //Awesome!    

但我们还是尽量避免使用alert,现在我们可以把我们学的东西整合到客户端页面中了。

全文请见:http://blog.bingo929.com/html5-websockets.html

目录
相关文章
|
6月前
|
存储 移动开发 前端开发
HTML5的部分特性
【4月更文挑战第9天】HTML5的部分特性
54 1
|
6月前
|
存储 移动开发 前端开发
HTML新特性【HTML5内联SVG、SVG_矩形、SVG 与 Canvas两者间的区别 、HTML5_MathML 】(三)-全面详解(学习总结---从入门到深化)
HTML新特性【HTML5内联SVG、SVG_矩形、SVG 与 Canvas两者间的区别 、HTML5_MathML 】(三)-全面详解(学习总结---从入门到深化)
86 0
|
12天前
|
存储 移动开发 前端开发
html5有哪些新特性?
【10月更文挑战第19天】
|
2月前
|
Web App开发 存储 移动开发
前端基础(十七)_HTML5新特性
本文概述了HTML5的关键新特性,包括canvas图形绘制、多媒体的`video`和`audio`元素、本地存储功能、语义化标签(如`header`、`footer`、`nav`等)及其新增表单控件和属性(如`url`、`email`、`date`类型输入框等)。这些改进增强了网页的功能性和用户体验。
39 1
前端基础(十七)_HTML5新特性
|
2月前
|
存储 移动开发 API
HTML5的新特性
HTML5引入了众多新特性和增强功能,简化并强化了网页开发。新增结构元素如`&lt;header&gt;`、`&lt;footer&gt;`、`&lt;article&gt;`等使页面布局更清晰;表单增强支持更多输入类型及属性;内置音频视频播放无需插件;`&lt;canvas&gt;`与SVG支持提升了图形处理能力;Geolocation API和Web存储改善了用户体验;离线应用、拖放功能及Web Workers则进一步提升了网页应用的实用性和交互性。HTML5令网页开发更为现代化,为开发者提供了丰富的工具集。
|
3月前
|
移动开发 网络协议 数据安全/隐私保护
|
3月前
|
存储 移动开发 前端开发
HTML5时代来临,这些新特性你掌握了吗?一篇文章带你玩转Web前端技术潮流!
【8月更文挑战第26天】HTML5(简称H5)作为新一代Web标准,相比HTML4带来了诸多增强功能。
54 2
|
3月前
|
存储 移动开发 前端开发
HTML5 的新特性
【8月更文挑战第24天】
58 0
|
3月前
|
移动开发 UED HTML5
HTML5新特性概览——揭秘志愿填报的智慧之选
HTML5新特性概览——揭秘志愿填报的智慧之选
|
6月前
|
人工智能 前端开发 JavaScript
【前端设计】HTML+CSS+JavaScript基本特性
【前端设计】HTML+CSS+JavaScript基本特性