在面试时用php+swoole编写了一个简易聊天室,面试官让我明天来上班!

本文介绍了如何在面试中利用PHP和Swoole构建一个简易聊天室,展示了Swoole作为异步网络通信引擎在PHP中的应用,以及它在互联网、云计算等领域的广泛用途。通过新建PushServer.php、MessageHandler.php和聊天室页面,实现了完整的聊天室功能。此外,还提及了PHP进阶学习资源和提升方向。
摘要由CSDN通过智能技术生成

Swoole:面向生产环境的 PHP 异步网络通信引擎

使 PHP 开发人员可以编写高性能的异步并发 TCP、UDP、Unix Socket、HTTP,WebSocket 服务。Swoole 可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网(IOT)、车联网、智能家居等领域。使用 PHP + Swoole 作为网络通信框架,可以使企业 IT 研发团队的效率大大提升,更加专注于开发创新产品。

新建PushServer.php

<?php
/**
 * Created by PhpStorm.
 * User: zhengbingdong
 * Date: 2020/08/15
 * Time: 01:06
 */

class PushServer
{
   
    private static $instance;
    private static $server;
    public $messageHandler;//处理消息的对象

    //不能够在类外面创建该对象的实例
    private function __construct()
{
   
        //>>1.创建websocket对象
        self::$server = new swoole_websocket_server('0.0.0.0', 9502);
        //>>2.注册事件
        self::$server->on('open', [$this, 'onOpen']);//将当前类的onOpen方法作为open的事件处理函数
        self::$server->on('message', [$this, 'onMessage']);
        self::$server->on('close', [$this, 'onClose']);
        self::$server->on('workerStart',[$this,'onWorkerStart']);
    }

    //当客户端连上之后要执行的方法
    public function onOpen($server, $req)
{
   
        echo "connection open: {
     $req->fd}\n";
    }

    //客户端向服务器发送消息要执行的方法
    public function onMessage($server, $frame)
{
   
        //将传输的json转成数组
        $data = json_decode($frame->data,true);
        //检查方法是否存在
        if (method_exists($this->messageHandler,$data['cmd'])){
   
            call_user_func([$this->messageHandler,$data['cmd']],self::$server,$data['data']);
        }else{
   
            $outMessage = json_encode([
                'status' => 'error',
                'msg' => '非法操作'
            ]);
            echo $outMessage."\n";
            self::$server->push($frame->fd, $outMessage);
        }
    }

    //客户端和服务器端断开连接时执行的方法
    public function onClose($server,$fd)
{
   
        $online = [];
        foreach ($server->connections as $clientId) {
   
            array_push($online, $clientId);
            $outMessage = json_encode(
                [
                    'type' => 'close',
                    'fid' => $clientId,
                    'online' => $online,
                    'num' => 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值