HTML5超酷新特性WebSockets初体验

人人网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

时间: 2024-10-23 14:22:32

HTML5超酷新特性WebSockets初体验的相关文章

暴雪公布了星际争霸2资料片虫群之心中虫族的超酷新单位

2010暴雪嘉年华上,暴雪公布了星际争霸2资料片虫群之心中虫族的超酷新单位,虽然还有待修改,但是依然非常给力,一起来欣赏一下. 暴雪设计师称该单位目前还在不断改动 内部代号为"37号单位" 接下来的这个虫族新单位就更酷了!相信星际2的设计师一定非常喜欢变形金刚.接下来的几张截图请睁大眼睛观看. 这看起来是一个普通的人类地堡,但地堡爆炸之后会从下钻出来一只虫子,而这虫子竟然把人类地堡的碎片当做自己的护甲,还装备了非常给力的机枪. 不是说CHAR星非常荒芜的吗?谁来介绍下星际2? 上图是一

星际2资料片《虫群之心》虫族超酷新单位曝光

2010暴雪嘉年华上,暴雪公布了星际争霸2资料片虫群之心中虫族的超酷新单位,虽然还有待修改,但是依然非常给力,一起来欣赏一下. 暴雪设计师称该单位目前还在不断改动 内部代号为"37号单位" 接下来的这个虫族新单位就更酷了!相信星际2的设计师一定非常喜欢变形金刚.接下来的几张截图请睁大眼睛观看. 这看起来是一个普通的人类地堡,但地堡爆炸之后会从下钻出来一只虫子,而这虫子竟然把人类地堡的碎片当做自己的护甲,还装备了非常给力的机枪. 不是说CHAR星非常荒芜的吗?谁来介绍下星际2? 上图是一

HTML5 &amp; CSS3初学者指南(3) – HTML5新特性

介绍 本文介绍了 HTML5 的一些新特性.主要包含以下几个方面: Web 存储 地理位置 拖放 服务器发送事件   Web存储 HTML5 Web 存储的设计与构想是一个更好的机制来存储客户端的网络数据.它是通过一个网络浏览器作为客户端数据库实现的,它允许网页以键值对的形式来存储数据. 它具有以下特征: 每个原始网站/域最多可存储 5MB 的数据. 你可以通过属性和方法来使用 JavaScript 操作 web 存储器中的数据实现访问. 就像 cookies,你可以选择将保持数据(维持),即使

投票结果:HTML5新特性在站点中的使用情况

导读:本文作者Chris Coyier在css-tricks.com发表了这篇文章<Poll Results: HTML5 Features in Use on Production Sites>,由国内译言网Jinjiang编译,本文对使用HTML5的一些新特性作出调查,比如新语义化标签.表单特性.音频视频.等等. 以下是文章内容: 作为一个是否应该使用HTML5的民意调查的延续,我问了另外一个问题: "你们在网站里都使用了哪些HTML5新特性呢?" 下面这个表就是近30

IE10对CSS3新特性的支持和HTML5新特性的支持

文章简介:IE10将增强对HTML5和CSS3的支持. Windows 8 终于发布了,虽然现在可用的只是开发者预览版,好消息是,IE 10 也随着发了,虽然现在还只有Windows 8可用.我们来看下IE10都有哪些新特性吧. IE开发者中心给到了一份详细的针对前端开发者的文档,列出了IE10支持的HTML5和CSS3新特性.嗯,它终于跟上了: CSS3 css region css3多列 Flexbox grid 定位浮动(positioned float) 3D变换(3D transfro

开发者必须知道的HTML5十五大新特性

HTML5想必大家都很熟悉了,因为太多的媒体在讨论这一技术.然而,你能准确地说出HTML5带来了哪些新特性吗?本文总结了HTML5带来的15项你必须知道的新特性. 一起来看下: 1.新的文档类型 (New Doctype) 目前许多网页还在使用XHTML 1.0 并且要在第一行像这样声明文档类型: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xh

《Windows 8 开发权威指南:HTML5 和JavaScript卷》——第2章 HTML5 JavaScript概述以及新特性 2.1 HTML5概述

第2章 HTML5 JavaScript概述以及新特性 2.1 HTML5概述 HTML5已经推出,Web也不会是一成不变的. 以前你一定听说过这句话或类似的内容. 我想,当你听到这句话时,可能会变得很激动,转动眼珠.皱着眉头一脸疑问. 也可能这三种反应你都有.有这些反应,我非常能理解. HTML5 十分令人称道,正如我们所知,它可能会改变 Web,但它的作用也被夸大了. 而且,它的真正意义还难以琢磨. 在使用 HTML5 构建应用程序时,我自己也有过上面所说的每一种反应. HTML5 是一个宽

jQuery实现的超酷苹果风格图标滑出菜单效果代码_jquery

本文实例讲述了jQuery实现的超酷苹果风格图标滑出菜单效果代码.分享给大家供大家参考.具体如下: 这是一款超酷苹果风格图标滑出菜单,调用了jquery1.3.2的库文件,整个菜单动感十足,用在网站上增色不少. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/jquery-apple-style-ico-show-menu-codes/ 具体代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0

推荐9款HTML5实现的超酷特效 带给你全新的视角和体验

中介交易 SEO诊断淘宝客 站长团购 云主机 技术大厅 之前我们推荐了8款HTML5实现的特效和应用,今天我们带来的这9款热门的HTML5特效同样会带给你全新的视角和体验. HTML5是HTML的升级版,HTML5有两大特点:首先,强化了 Web 网页的表现性能.其次,追加了本地数据库等 Web 应用的功能.广义论及HTML5时,实际指的是包括HTML.CSS和JavaScript在内的一套技术组合.今天我们推荐8款使用HTML5生成的特殊效果,希望可以对大家的使用带来帮助! HTML5 3D