翼度科技»论坛 编程开发 PHP 查看内容

workerman即时通讯聊天系统

4

主题

4

帖子

12

积分

新手上路

Rank: 1

积分
12
项目地址

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不能实时更新的弊端,实现了 "伪-长连接"
  • 轮询的本质依然是 request  response

弊端


  • 推送延迟
  • 服务端压力
  • 推送延迟和服务端压力无法中和
websocket改进


JS Websocket

简单示例
  1. ws = new WebSocket('ws://127.0.0.1:2000');
  2. //当 websocket 创建成功后 触发onopen事件
  3. ws.onopen = function () {
  4.     var data = {};
  5.     data.type = 'login';
  6.     //标识  客户还是客服
  7.     data.group = 'member';
  8.     //发送信息
  9.     ws.send(JSON.stringify(data));
  10. }
  11. //收到服务端发来的消息 触发 onmessage
  12. ws.onmessage = function (e) {
  13.     var data = JSON.parse(e.data);
  14. }
复制代码
Workerman基础

workerman手册
安装

Composer安装:
composer require workerman/workerman
启动停止
  1. # 以debug(调试)方式启动
  2. php start.php start
  3. # 以daemon(守护进程)方式启动
  4. php start.php start -d
  5. # 停止
  6. php start.php stop
  7. # 重启
  8. php start.php restart
  9. # 平滑重启
  10. php start.php reload
  11. # 查看状态
  12. php start.php status
复制代码
简单示例

实例一、使用HTTP协议对外提供Web服务

创建start.php文件
[code]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具