五、搭建websocket服务

5.1、简介

WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。

WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

websocket解决服务器端与客户端即时通信的问题。
协议名:ws 加密通信 wss 通信成功 状态码 101

5.2、浏览器支持

PHP-swoole搭建websocket服务_socket

5.3、html5中websocketApi

var ws = new WebSocket("ws://localhost:9501");
  • Websocket事件
    PHP-swoole搭建websocket服务_http_02
  • WebSocket 方法
    PHP-swoole搭建websocket服务_http_03.

5.4、swoole实现websocket服务

WebSocket\Server 继承自 Http\Server

$server = new Swoole\WebSocket\Server("0.0.0.0", 9501);
// 当WebSocket客户端与服务器建立连接并完成握手后会回调此函数
$server->on('open', function (Swoole\WebSocket\Server $server, Swoole\Http\Request $request) {
    echo "已连接成功\n";
});
// 当服务器收到来自客户端的数据帧时会回调此函数  此回调方法不能缺少
$server->on('message', function (Swoole\WebSocket\Server $server, swoole_websocket_frame  $frame) {
     // 服务器端主动向客户端发送消息
    //$frmae->data 客户端发过来的数据
    // 服务器端向客户端发送消息
    $server->push($frame->fd, "this is server");
});
// 客户端关闭连接时触发此回调函数
$server->on('close', function ($ser, $fd) {
    echo "client {$fd} closed\n";
});
// 启动服务
$server->start();