WebSocket简单介绍(WebSocket JavaScript 接口)(2)
上一节介绍了 WebSocket 规范,其中主要介绍了 WebSocket 的握手协议。握手协议通常是我们在构建 WebSocket 服务器端的实现和提供浏览器的WebSocket 支持时需要考虑的问题,而针对 Web 开发人员的 WebSocket JavaScript 客户端接口是非常简单的,以下是 WebSocket JavaScript 接口的定义:
WebSocket JavaScript 定义:
[Constructor(in DOMString url, in optional DOMString protocol)]
interface WebSocket {
readonly attribute DOMString URL;
// ready state
const unsigned short CONNECTING = ;
const unsigned short OPEN = ;
const unsigned short CLOSED = ;
readonly attribute unsigned short readyState;
readonly attribute unsigned long bufferedAmount;
//networking
attribute Function onopen;
attribute Function onmessage;
attribute Function onclose;
boolean send(in DOMString data);
void close();
};
WebSocket implements EventTarget;
其中 URL 属性代表 WebSocket 服务器的网络地址,协议通常是”ws”,send 方法就是发送数据到服务器端,close 方法就是关闭连接。除了这些方法,还有一些很重要的事件:onopen,onmessage,onerror 以及 onclose。我们借用 Nettuts 网站上的一张图来形象的展示一下 WebSocket 接口:
WebSocket JavaScript 接口
aaarticlea/png;base64,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" alt="" />
下面是一段简单的 JavaScript 代码展示了怎样建立 WebSocket 连接和获取数据:
建立 WebSocket 连接的实例 JavaScript 代码
var wsServer = 'ws://localhost:8888/Demo';
var websocket = new WebSocket(wsServer);
websocket.onopen = function (evt) { onOpen(evt) };
websocket.onclose = function (evt) { onClose(evt) };
websocket.onmessage = function (evt) { onMessage(evt) };
websocket.onerror = function (evt) { onError(evt) };
function onOpen(evt) {
console.log("Connected to WebSocket server.");
}
function onClose(evt) {
console.log("Disconnected");
}
function onMessage(evt) {
console.log('Retrieved data from server: ' + evt.data);
}
function onError(evt) {
console.log('Error occured: ' + evt.data);
}
浏览器支持
下面是主流浏览器对 HTML5 WebSocket 的支持情况:
aaarticlea/png;base64,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" alt="" />
WebSocket简单介绍(WebSocket JavaScript 接口)(2)的更多相关文章
- WebSocket简单介绍(WebSocket 实战)(3)
这一节里我们用一个案例来演示怎么使用 WebSocket 构建一个实时的 Web 应用.这是一个简单的实时多人聊天系统,包括客户端和服务端的实现.客户端通过浏览器向聊天服务器发起请求,服务器端解析客户 ...
- HTTP协议系列(3)---包括WebSocket简单介绍
一.HTTPS HTTP是超文本传输协议,那HTTPS是什么尼?要明白HTTPS是什么先要明白HTTP的缺点,想一下我们在使用HTTP的时候会有那些缺点尼? 1.通信使用的明文(不加密),内容 ...
- WebSocket简单介绍
Java后端WebSocket的Tomcat实现 一.WebSocket简单介绍 随着互联网的发展,传统的HTTP协议已经很难满足Web应用日益复杂的需求了.近年来,随着HTML5的诞生,WebSoc ...
- WebSocket简单介绍(1)
HTML5作为下一代WEB标准,拥有许多引人注目的新特性,如Canvas.本地存储.多媒体编程接口.WebSocket等等.今天我们就来看看具有“Web TCP”之称的WebSocket. WebSo ...
- webSocket 简单介绍
WebSocket :WebSocket协议支持(在受控环境中运行不受信任的代码的)客户端与(选择加入该代码的通信的)远程主机之间进行全双工通信. 简单的说 ...
- HTML5 WebSocket 技术介绍
WebSocket是html5规范新引入的功能,用于解决浏览器与后台服务器双向通讯的问题,使用WebSocket技术,后台可以随时向前端推送消息,以保证前后台状态统一,在传统的无状态HTTP协议中,这 ...
- 简单介绍Javascript匿名函数和面向对象编程
忙里偷闲,简单介绍一下Javascript中匿名函数和闭包函数以及面向对象编程.首先简单介绍一下Javascript中的密名函数. 在Javascript中函数有以下3中定义方式: 1.最常用的定义方 ...
- Java Springboot webSocket简单实现,调接口推送消息到客户端socket
Java Springboot webSocket简单实现,调接口推送消息到客户端socket 后台一般作为webSocket服务器,前台作为client.真实场景可能是后台程序在运行时(满足一定条件 ...
- 实现服务端和客户端的实时双向数据传输-WebSocket简单了解
WebSocket 前段时间项目中遇到了消息推送的问题,当时采用客户端轮询,每隔 5s 请求一次数据.由于轮询的效率低,非常浪费资源.后面准备把轮询调整为使用 WebSocket 来建立连接,实现推送 ...
随机推荐
- 利用nginx使ftp可以通过http访问
./nginx 启动服务./nginx -s stop 关闭服务./nginx -s reload 重新加载配置文件 搭建nginx映射ftp服务:打开nginx的配置文件nginx.conf(位于n ...
- node.js常用的fs文件系统
fs文件系统模块对于系统文件及目录进行一些读写操作. 模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync(). 异步的 ...
- 使用CSS3制作首页登录界面实例
响应式设计 在这个页面中,使用下面3点来完成响应式设计 1.最大宽度 .设定了一个 max-width 的最大宽度,以便在大屏幕时兼容.: 2.margin : 30px auto; 使其保持时刻居中 ...
- thinkphp发送邮箱(以thinkphp5作为示例)。
第一步:设置我们的邮箱客户端授权码 第二步:下载相应的第三方类库(我这里用的PHPemail) 这是phpemailde 第三方类库的文件下载地址:https://github.com/PHPMail ...
- Python基础教程学记(1)
引言 Python是什么?——Python是一种面向对象的解释性高级编程语言,具有动态语义.这句话的要点在于,Python是一种知道如何不妨碍你编写程序的编程语言.它让你能够毫无困难地实现所需的功能, ...
- Python自动化运维——文件与目录差异对比
Infi-chu: http://www.cnblogs.com/Infi-chu/ 模块:filecmp 安装:Python版本大于等于2.3默认自带 功能:实现文件.目录.遍历子目录的差异 常用方 ...
- shell重温---基础篇(连接数据库)
前几天分享了shell字符串操作,数组操作等,接下来回归到项目,进行数据库操作.按照一般情况来说,shell连接数据库基本上都是DB使用的,因为需要运行大量的sql啊什么的,所以都会封装到shell中 ...
- C 二维指针难点详解。
关于 指向二维数组的指针. int a[2][3]; int *p; int (*p_1)[3]; 可以用p_1 = a ,但是不能用p = a : 因为此时数组a的数据类型是 int (* ...
- 批处理bat实现创建、复制、删除文件及文件夹
转自:http://blog.csdn.net/linda1000/article/details/10221285 1 建bat文件自动执行复制,删除命令. 例1:以下是复制cd.dll文件至win ...
- Virtual Host on Apache(Apache上建立虚拟主机)
0. Introduction Usually, we want to build two or more websites on a web server, but we have only one ...