<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">一、websocket协议简介</span>
WebSocket是为解决客户端与服务端实时通信而产生的技术。其本质是先通过HTTP/HTTPS协议进行握手后创建一个用于交换数据的TCP连接,此后服务端与客户端通过此TCP连接进行实时通信。
二、php使用的一些websocket函数
resource socket_create ( int $domain , int $type , int $protocol )
bool socket_set_option ( resource $socket , int $level , int $optname , mixed $optval )
bool socket_bind ( resource $socket , string $address [, int $port = 0 ] )
bool socket_listen ( resource $socket [, int $backlog = 0 ] )
以上四个方法都是非阻塞的,而下面的几个方法都是阻塞的或者是有timeout的
resource socket_accept ( resource $socket )
int socket_recv ( resource $socket , string &$buf , int $len , int $flags )
string socket_read ( resource $socket , int $length [, int $type = PHP_BINARY_READ ] )
后面会对socket_recv()和socket_read()进行介绍
三、php服务端代码分析
<?php
/**
* Created by PhpStorm.
* User: changshuiwang
* Date: 2016/9/5
* Time: 14:35
*/
error_reporting(~E_WARNING & ~E_NOTICE);
set_time_limit(0);
class Wserver{
public $address;
public $port;
public $master; <span style="color: rgb(255, 0, 0);">// 连接 server 的 client</span>
public $sockets = array(); <span style="color:#ff0000;">// 不同状态的 socket 管理</span>
//public $handshake = false; <span style="color:#ff0000;">// 判断是否握手</span>
public $request = array(); <span style="color:#ff0000;">//过来的请求</span>
public $response = array();<span style="color:#ff0000;">//服务人员</span>
public $client = array(); <span style="color:#ff0000;">//正在进行的会话</span>
public $wenhou = "你好,有什么可以帮助你的么?"; <span style="color:#ff0000;">//建立请求的问候语</span>
public $refuse = "对不起,请稍等,暂时无空闲客服人员。"; <span style="color:#ff0000;">//没有空客服人员的回话</span>
//public $tag=false; //默认为false,标志位&#x