1. 什么是WebSocket?
WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。
可以用来替代长轮询(long polling);long polling 就是客户端不停地向服务器发送请求以获取最新的数据信息,比如说用ajax轮询就是一种方式。
应用场景:一些高实时的应用场景,比如社交聊天、弹幕、多玩家游戏、协同编辑、股票基金实时报价、体育实况更新、视频会议/聊天、基于位置的应用、在线教育、智能家居等等。
2. WebSocket客户端实现
2.1 创建一个 WebSocket 对象
var Socket = new WebSocket(url, [protocol] );
第一个参数 url, 指定连接的 URL。WebSocket协议的URL使用ws://
开头,SSL的WebSocket协议使用wss://
开头。
第二个参数 protocol 是可选的,指定了可接受的子协议。
2.2 WebSocket 属性
Socket.readyState
只读属性 readyState 表示连接状态,状态值:
- 0 – 表示连接尚未建立。
- 1 – 表示连接已建立,可以进行通信。
- 2 – 表示连接正在进行关闭。
- 3 – 表示连接已经关闭或者连接不能打开。
Socket.bufferedAmount
只读属性 bufferedAmount 表示已被 send() 放入正在队列中等待传输,但是还没有发出的 UTF-8 文本字节数。
2.3 WebSocket 事件
WebSocket 对象目前一共有四个:onopen, onmessage, onclose 和 onerror。
- Socket.onopen 连接建立时触发
- Socket.onmessage 客户端接收服务端数据时触发
- Socket.onerror 通信发生错误时触发
- Socket.onclose 连接关闭时触发
2.4 WebSocket 方法
Socket.send()
使用连接发送数据
Socket.close()
关闭连接
2.5. 一个简单的例子
<script type="text/javascript">
//检查浏览器是否支持WebSocket
if(window.WebSocket){
console.log('This browser supports WebSocket');
}else{
console.log('This browser does not supports WebSocket');
}
// 打开一个 web socket
var ws = new WebSocket("ws://localhost:1234");
/**
* 连接建立时
*/
ws.onopen = function()
{
// 使用 send() 方法发送数据
ws.send("hello");
};
/**
* 接收服务端数据时
*/
ws.onmessage = function (evt)
{
var received_data = evt.data;
console.log(received_data);
};
/**
* 连接关闭时
*/
ws.onclose = function(){
alert("连接已关闭...");
};
/**
* 通信发生错误时
*/
ws.onerror = function(){
// 关闭 websocket
ws.close();
};
</script>
3. WebSocket 服务端实现
服务端实现 WebSocket,现在各种语言都很方便了。
比如PHP,我们可以使用Swoole,workerman,ReactPHP等。
0 条评论
来做第一个留言的人吧!