好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

HTML5 WebSocket

html5 WebSocket 提供了一种在单个 TCP 连接上进行全双工通讯的协议

html5 WebSocket API 的实现中,浏览器和服务器只需 要做 一个 握手的动作,然后,浏览器和服务器之间就形成了一条 快速 通道,两者之间就直接可以数据互相传送

浏览器通过 JavaScript 向服务器发出建立 WebSocket 连接的请求,连接建立以后,客户端和服务器端就可以通过 TCP 连接直接交换数据

当 获取 Web Socket 连接后,可以通过?send()? 方法 来向服务器发送数据,并通过?onmessage?事件来接收服务器返回的数据

下面的 代码 创建了 一个 WebSocket 对象

var?ws?=?new?WebSocket(url,[protocol]?);

new WebSocket()?第 一个 参数 url,指定连接的 URL

第二个参数 protocol 是可选的,指定了可接受的子协议

HTML5 WebSocket 属性

下表列出了 WebSocket 对象的 属性

其中:ws 是 WebSocket 的 一个 对象

属性 描述 ws.readyState 只读 属性 readyState 表示连接状态,可以是以下值
0 - 表示连接尚未建立
1 - 表示连接已建立,可以进行通信
2 - 表示连接 正在进行 关闭
3 - 表示连接已经 关闭 或者连接不能打开 ws.buffere dam ount 只读 属性 buffere dam ount 表示已被 send() 放入正在队列中等待传输,但是还没有发出的 UTF-8 文本字节数


WebSocket 事件

下表列出了 WebSocket 对象的相关事件

其中: ws 是 WebSocket 的 一个 对象

事件 事件处理程序 描述 open ws.o nop en 连接建立时触发 message ws.onmessage 客户端接收服务端数据时触发 error ws.onerror 通信发生 错误 时触发 close ws.onclose 连接 关闭 时触发


WebSocket 方法

下表列出了 WebSocket 对象的相关 方法

其中: ws 是 WebSocket 的 一个 对象

方法 描述 Socket.send() 使用连接发送数据 Socket.close() 关闭 连接


WebSocket 实例

WebSocket 协议本质上是 一个 基于 TCP 的协议

为了建立 一个 WebSocket 连接,客户端浏览器首先要向服务器发起 一个 HTTP 请求

这个请求和通常的 HTTP 请求不同,包含了一些附加头信息,其中附加头信息 "Upgrade: WebSocket" 表明这是 一个 申请协议 升级 的 HTTP 请求

服务器端解析这些附加的头信息然后产生应答信息返回给客户端

客户端和服务器端的 WebSocket 连接就建立起来了

双方就可以通过这个连接通道自由的传递信息,并且这个连接会持续存在直到客户端或者服务器端的某一方主动的 关闭 连接

客户端的 HTML 和 JavaScript

目前大部分浏览器 支持 HTML5 WebSocket() 接口

我们可以在以下浏览器中尝试: Chrome,Mozilla,Opera 和 Safari

ws.html
<!DOCTYPE?HTML>
< Meta ?charset="utf-8">
<script>
???function?WebSocket test() 
???{
??????if?("WebSocket"?in?window)
??????{
?????????alert("您的浏览器 支持 ?WebSocket!");

?????????//?打开 一个 ?web?socket?????????var?ws?=?new?WebSocket("ws://localhost:9998/echo");

?????????ws.o nop en?=?function()
?????????{
????????????//?Web?Socket?已连接上,使用?send()? 方法 发送数据
????????????ws.send("发送数据");
????????????alert("数据发送中...");
?????????};

?????????ws.onmessage?=?function?(evt)?
?????????{?
????????????var?received_msg?=?evt.data;
????????????alert("数据已接收...");
?????????};

?????????ws.onclose?=?function()
?????????{?
????????????//? 关闭 ?websocket
????????????alert("连接已 关闭 ...");?
?????????};
??????}

??????else
??????{
?????????//?浏览器 不支持 ?WebSocket
?????????alert("您的浏览器 不支持 ?WebSocket!");
??????}
}
</script>
<div?id="sse">
???<a?href="javascript:WebSocket test() ">运行?WebSocket</a>
</div>

安装 pywebsocket

在执行以上程序前,我们需要创建 一个 支持 WebSocket 的服务

可从pywebsocket下载 mod_pywebsocket,或者使用 git 命令下载

git?clone?https://github.com/google/pywebsocket.git

mod_pywebsocket 需要 python 环境 支持

mod_pywebsocket 是 一个 Apache HTTP 的 Web Socket扩展,安装步骤如下:

解压下载的 文件

进入?pywebsocket?目录

执行命令:

$?python?setup.py?build?$?sudo?python?setup.py?install

查看文档说明

pydoc?mod_pywebsocket

开启服务

在?pywebsocket/mod_pywebsocket?目录下执行以下命令

$?sudo?python?standalone.py?-p?9998?-w?example/

以上命令会开启 一个 端口号为 9998 的服务,使用 -w 来设置处理程序 echo_wsh.py 所在的目录。

现在我们可以在 Chrome 浏览器打开前面创建的?ws.html? 文件

如果浏览器 支持 WebSocket(),点击"运行 WebSocket"

HTML5 历史记录API ? ?HTML 5 服务器发送事件

查看更多关于HTML5 WebSocket的详细内容...

  阅读:39次

上一篇

下一篇

第1节:HTML5 教程    第2节:HTML5 浏览器支持    第3节:HTML5 新元素    第4节:HTML5 Video 视频    第5节:HTML 5 Video + DOM    第6节:HTML5 内联 SVG    第7节:HTML5 新的 Input 类型    第8节:HTML5 MathML 数学公式    第9节:HTML5 Geolocation 地理定位    第10节:HTML5 Canvas画布    第11节:HTML5 拖放 ( drag 和 drop )    第12节:HTML5 Audio 音频    第13节:HTML5 Web Workers    第14节:HTML5 表单元素    第15节:HTML5 表单属性    第16节:HTML5 语义元素    第17节:HTML5 Web 存储    第18节:HTML5 Web SQL 数据库    第19节:HTML5 应用程序缓存    第20节:HTML 5 服务器发送事件    第21节:HTML5 WebSocket    第22节:HTML5 历史记录API    第23节:HTML 5 代码规范    第24节:HTML5 Canvas 描边和填充    第25节:HTML5 Canvas 绘制矩形    第26节:HTML5 Canvas 清除画布    第27节:HTML5 Canvas 渐变    第28节:HTML5 Canvas 合成    第29节:HTML5 Canvas 绘制图像    第30节:HTML5 Canvas 绘制文本    第31节:HTML5 Canvas 阴影    第32节:HTML5 Canvas 路径    第33节:HTML5 Canvas 转换    第34节:HTML5 Canvas 状态    第35节:HTML5 Canvas toDataURL()    第36节:HTML5 Canvas 像素处理    第37节:HTML5 Canvas 制作动画