php使用websocket编写的简易客服系统源码分析

本文介绍了WebSocket技术,用于实现客户端与服务端的实时通信。重点讲述了PHP中使用的一系列websocket函数,如socket_create、socket_set_option、socket_bind、socket_listen等。尽管给出的是一个简单的PHP客服系统示例,但作者指出,PHP的socket监听可能基于较旧的select机制,而非现代的epoll。
摘要由CSDN通过智能技术生成

<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的

int socket_select ( array &$read , array &$write , array &$except , int $tv_sec [, int $tv_usec = 0 ] )

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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值