【HTML5 WebSocket】WebSocket对象特性和方法

《HTML5 WebSocket权威指南》学习笔记&3

WebSocket方法的对象特性

1. WebSocket方法


a. send方法

send方法用于在WebSocket连接建立后,客户端向服务端发送消息。可分为发送两种消息,一种是普通文本信息,一种是二进制数据。需注意的是,send方法必须在连接建立以后才能使用,也就是在onopen里使用才不会出错。

发送普通消息

这个比较简单,在上一篇学习WebSocket事件时就用到了,只需要send(message)即可。

发送二进制数据

在Web应用中,我们还需要发送图片、音频、视频等二进制数据,这就需要Blob类的配合,Blod是二进制大对象。

下面是一个综合示例:

   ws = WebSocket("ws://echo.websocket.org/echo",[]);

    /*
    open事件触发表明协议握手成功,WebSocket以及准备好接收和发送数据
    */
    ws.onopen = function(e){
        console.log("start..");
        //发送文本消息
        ws.send("Hello World");
        //发送二进制对象
        var data = new Blob("blob object");
        ws.send(data);
    }

   /*
    message消息在客户端接收到消息时触发
    */
    ws.onmessage = function(e){
        console.log("收到信息如下:");
        if(typeof e.data == "string"){
            console.log("文本消息:",e,e.data);
        }else{
            console.log("非文本消息:",e,e.data);
        }
        ws.close();
    }

b. close方法|

close方法用于关闭连接,它可以不带参数表示直接关闭,也可以带上两个参数(code,reason)向服务端提交关闭连接的原因:
    1.  ws.close()
    2.  ws.close(1000,"close normally")

2. 对象特性


在学习了WebSocket的方法后,接下来学习一下WebSocket提供的对象特性,这些特性提供了关于WebSocket对象的更多信息:readyState、bufferedCount
和protocol。英文稍好的话其实由字面就可知道这三个对象分别对应着WebSocket的什么特性。下面一一介绍一下:

a. readyState

WebSocket通过只读特性readyState报告其连接状态,连接状态共有四个,使用者可以根据这个特性判断此时的连接状态,然后再进行下一步行动。下面是四个连接状态列表:

特性常量 取值 状态
WebSocket.CONNECTING 0 连接正在进行中,但还未建立
WebSocket.OPEN 1 连接已建立,消息可以开始传递
WebSocket.CLOSING 2 连接正在进行关闭
WebSocket.CLOSED 3 连接已关闭
<br>

下面是示例:

    var ws = new WebSocket("ws://echo.websocket.org/echo",[]);
    if(ws.readyState == WebSocket.CONNECTING){
        console.log("连接正在建立");
    }
    ws.onopen = function(e){
        if(ws.readyState == WebSocket.OPEN){
            console.log("连接已打开!");
        }
    }

b. bufferedAmount

当客户端向服务端发送大量数据时,浏览器会先将数据缓存到浏览器的发送队列里,然后逐段地向服务器发送,bufferedAmount这个特性就是告诉客户端现在队列里还有多少已经缓存了但没发送的数据。示例如下:

var limit = 10240;
var ws = new WebSocket("ws://echo.websocket.org",[]);

/*
open事件触发表明协议握手成功,WebSocket以及准备好接收和发送数据
*/
ws.onopen = function(e){
    console.log("start..");
    setInterval(function(){
        if(ws.bufferedAmount < limit){
            var a = []
            for(var i=0;i<1000;i++){
                a.push(1);
            }
            ws.send(a);
        }
    },10);
    setInterval(function(){
        console.log(ws.bufferedAmount);
    },500)
}

c. protocol

protocol特性包含在打开握手期间WebSocket服务器选择的协议名,换句话说,protocol特性告诉你特定WebSocket上使用的协议。

时间: 2024-10-08 18:43:21

【HTML5 WebSocket】WebSocket对象特性和方法的相关文章

HTML5 中websocket长连接的具体实现方法

HTML5中通过调用与数据通信相关的Web Socket API,实现从服务器中推送信息到客户端. Socket又称为套接字,是基于W3C标准开发在一个TCP接口中进行双向通信的技术.通常情况下,Socket用于描述IP地址和端口,是通信过程中的一个字符句柄.当服务器端又多个应用服务绑定一个Socket时,通过通信中的字符句柄,实现不同端口对应不同应用服务功能.目前,大部分浏览器都支持HTML5中Socket API的运行. WebSocket连接服务器和客户端,这个链接是一个实时的长连接,服务

WebSocket对象特性

一:WebSocket对象特性 可以使用多种WebSocket对象特性提供关于WebSocket对象的更多信息:readyState.bufferedAmount和protocol. 1. WebSocket对象特性:readyState WebSocket对象通过只读特性readyState报告其连接状态,你在前面的几节中已经学到了一点相关的知识.这个属性根据连接状态自动变化,并提供关于WebSocket连接的有用信息. 表2-1描述了用于描述连接状态的readyState特性的4个不同值.

学习html5的WebSocket连接

1.什么是WebSocket WebSocket 是一种自然的全双工.双向.单套接字连接.使用WebSocket,你的HTTP 请求变成打开WebSocket 连接(WebSocket 或者WebSocket over TLS(TransportLayer Security,传输层安全性,原称“SSL”))的单一请求,并且重用从客户端到服务器以及服务器到客户端的同一连接.WebSocket 减少了延迟,因为一旦建立起WebSocket 连接,服务器可以在消息可用时发送它们.例如,和轮询不同,We

认识HTML5的WebSocket

认识HTML5的WebSocket 在HTML5规范中,我最喜欢的Web技术就是正迅速变得流行的WebSocket API.WebSocket提供了一个受欢迎的技术,以替代我们过去几年一直在用的Ajax技术.这个新的API提供了一个方法,从客户端使用简单的语法有效地推动消息到服务器.让我们看一看HTML5的WebSocket API:它可用于客户端.服务器端.而且有一个优秀的第三方API,名为Socket.IO. 一.什么是WebSocket API? WebSocket API是下一代客户端-

HTML5 and Websocket

在HTML5规范中,我最喜欢的Web技术就是正迅速变得流行的WebSocket API.WebSocket提供了一个受欢迎的技术,以替代我们过去几年一直在用的Ajax技术.这个新的API提供了一个方法,从客户端使用简单的语法有效地推动消息到服务器.让我们看一看HTML5的WebSocket API:它可用于客户端.服务器端.而且有一个优秀的第三方API,名为Socket.IO. 一.什么是WebSocket API? WebSocket API是下一代客户端-服务器的异步通信方法.该通信取代了单

使用Html5下WebSocket搭建简易聊天室

一.Html5WebSocket介绍 WebSocket protocol 是HTML5一种新的协议(protocol).它是实现了浏览器与服务器全双工通信(full-duplex). 现在,很多网站为了实现即时通讯(real-time),所用的技术都是轮询(polling).轮询是在特定的的时间间隔(time interval)(如每1秒),由浏览器对服务器发出HTTP request,然后由服务器返回最新的数据给客服端的浏览器.这种传统的HTTP request d的模式带来很明显的缺点 –

HTML5之WebSocket(转自知乎)

在认识websocket之前,我们必须了解的是websocket有什么用? 他能解决我们遇到的什么问题? 如果没用,那么我们就么有使用它的必要的. websocket就是建立起全双工协议的,提高了效率,节省了时间. 什么是WebSocket? WebSocket一种在单个 TCP连接上进行全双工通讯的协议.即WebSocket是一个协议. websocket是基于TCP协议的. 比较通俗的理解,我们可以点击这里. 推荐文章:  https://zhuanlan.zhihu.com/p/23467

HTML5之WebSocket

什么是WebSocket? WebSocket一种在单个 TCP连接上进行全双工通讯的协议.即WebSocket是一个协议. 比较通俗的理解,我们可以点击这里. 第一部分:WebSocket的特点 通过TCP一次握手就可以建立连接.  而HTTP协议需要三次握手. HTTP中服务器永远是被动的,即每次只有客户端发出请求,服务器才会响应. 但是WebSocket协议中,服务器是可以主动的向客户端传递数据.这样就避免了轮询的问题. WebSocket需要浏览器.服务器同时支持才可以使用,而http协

Html5之高级-11 拖放API (拖放事件、dataTransfer对象、setDragImage方法)

一.拖放API WEB 拖放 - 在桌面应用程序上,可以将元素从一个位置拖放到另一个位置,但在Web上,开发者没有一种能够实现这种操作的标准技术,从而在Web上去实现这个功能并不太容易 - 在 HTML5 标准中引入了拖放API,从而使我们有可能开发出于桌面应用程序完全相同的 Web应用程序 源元素事件 - 在拖放 API 中引入了一些新的事件,其中有一些元素是由源元素(拖动的元素)触发,称之为源元素事件,另一些事件由目标元素触发(源元素投放的元素) - 源元素事件: - dragstart:当