前言
这章节开始讲解关于与前端通信相关知识。实现一个在线聊天室类似的功能或者后端推送消息到前端,在没有
WebSocket
时,读大学那会儿还有接触过DWR(Direct Web Remoting)
,也使用过轮询的方式,当Servlet3.0
出来后,也有使用其异步连接机制进行前后端通信的。今天我们就来说说WebSocket
。它是HTML5
开始提供的。
关于WebSocket
WebSocket
是HTML5
开始提供的一种在单个TCP
连接上进行全双工
通讯的协议。
在WebSocket API
中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。
浏览器通过JavaScript
向服务器发出建立WebSocket
连接的请求,连接建立以后,客户端和服务器端就可以通过TCP
连接直接交换数据。
当获取Web Socket
连接后,你可以通过 send() 方法来向服务器发送数据,并通过 onmessage事件来接收服务器返回的数据。
对于前端,创建一个WebSocket
对象,如下:
var Socket = new WebSocket(url, [protocol] );
说明:第一个参数 url, 指定连接的 URL。第二个参数 protocol 是可选的,指定了可接受的子协议。
WebSocker属性
以下是WebSocket
对象的属性。假定我们使用了以上代码创建了Socket
对象:
属性 | 描述 |
---|---|
Socket.readyState | 只读属性 readyState 表示连接状态,可以是以下值: 0 – 表示连接尚未建立。 1 – 表示连接已建立,可以进行通信。 2 – 表示连接正在进行关闭。 3 – 表示连接已经关闭或者连接不能打开。 |
Socket.buffered |