WebSocket是HTML5开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。
HTTP与WebSocket:
HTTP协议的特点:属于“请求-响应”模型,客户端先发起请求,服务器才会返回响应;一个请求只能得到一个响应。有些特殊的应用场合,该模型存在问题:实时走势图、在线聊天室,必须要求服务器端一有更新的数据,客户端必须立即显示。使用HTTP协议的实现方法:心跳请求 = 定时器 + AJAX。并不完美:心跳太快,服务器压力大;心跳太慢,客户端看到数据的延迟太大。
WebSocket协议的特点:属于“广播-收听”模型,只要客户端连接到服务器,就“永久连接”,此后一方可以随时向另一方发起消息,对方及时收听。可以非常好的应用于实时走势、聊天室应用。
一个WebSocket(WS)协议的应用程序分为两部分:
(1)WS服务器:接收客户端连接请求
可以用Java、PHP、Node.js编写,独立运行,不依赖于任何其他服务器(如Web服务器)
使用PHP编写WS服务器应用:
1)修改PHP解释器的配置文件,启用socket相关的函数
去掉c:/xampp/php/php.ini:907行前的分号
2)在命令行中执行PHP解释器,运行WS应用文件:
(2)WS客户端:主动连接到服务器
可以用Java、PHP、Node.js、H5-WebSocket等技术编写
var ws = new WebSocket('ws://127.0.0.1:9999');
ws.onopen = function(){
//成功连接到服务器
}
ws.send('msg') //发送消息
ws.onmessage = function(e){ //接收消息
console.log(e.data)
}