workerman即时通讯聊天系统
项目地址HTTP
http协议
[*]超文本传输协议
[*]无状态协议
[*]基于tcp协议的一个应用层的协议
[*]http是单向的,浏览器发起向服务器的连接,服务器预先并不知道
http协议工作过程
[*]客户端和服务端建立连接(三次握手),http开始工作
[*]建立连接后客户端发送给请求服务器
[*]服务器接受到请求后,给予相应的响应信息
WebSoket
websoket协议
[*]websocket是H5提出的在单个TCP协议上进行的全双工通讯协议
[*]实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实事通讯的目的
[*]WebSokcet是一个持久化的协议
工作过程
[*]客户端发送http请求,经过三次握手,建立TCP连接,在http 请求里面存放 websocket 支持的版本号信息
[*]服务器接收请求,同样以http协议回应
[*]连接成功,客户端与服务器建立持久性的连接
websocket 与 http 差异
相同点
都是基于tcp的,都是可靠的性传输协议
不同点
[*]websocket是双向通信协议,模拟socket协议,可以双向发送或接受信息
[*]websocket是持久化连接,http 是短连接
[*]websocket是有状态的,http 是无状态的
[*]websocket 连接之后服务器和客户端可以双向发送数据,http只能是客户端发起一次请求之后,服务器才能返回数据
轮询
过程
[*]客户端发起长轮询,如果服务端的数据没有发生变化,就会 hold 住请求,知道服务端的数据发生变化
[*]优点 是解决了http不能实时更新的弊端,实现了 "伪-长连接"
[*]轮询的本质依然是 requestresponse
弊端
[*]推送延迟
[*]服务端压力
[*]推送延迟和服务端压力无法中和
websocket改进
JS Websocket
简单示例
ws = new WebSocket('ws://127.0.0.1:2000');
//当 websocket 创建成功后 触发onopen事件
ws.onopen = function () {
var data = {};
data.type = 'login';
//标识客户还是客服
data.group = 'member';
//发送信息
ws.send(JSON.stringify(data));
}
//收到服务端发来的消息 触发 onmessage
ws.onmessage = function (e) {
var data = JSON.parse(e.data);
}Workerman基础
workerman手册
安装
Composer安装:
composer require workerman/workerman
启动停止
# 以debug(调试)方式启动
php start.php start
# 以daemon(守护进程)方式启动
php start.php start -d
# 停止
php start.php stop
# 重启
php start.php restart
# 平滑重启
php start.php reload
# 查看状态
php start.php status简单示例
实例一、使用HTTP协议对外提供Web服务
创建start.php文件
页:
[1]