首页
开发手册
应用中心
工具
用户中心
Swoole 搭建环境(websocket)
中文简体
中文简体
English
上一篇
下一篇
#### Swoole 是什么? Swoole 使PHP开发人员可以编写高性能高并发的 TCP、UDP、Unix Socket、HTTP、 WebSocket等服务,让PHP不再局限于Web领域。Swoole4 协程的成熟将PHP带入了前所未有的时期, 为性能的提升提供了独一无二的可能性。Swoole可以广泛应用于互联网、移动通信、云计算、 网络游戏、物联网(IOT)、车联网、智能家居等领域。 综合性能对比FoundPHP对Swoole进行了官方适配,保证用户开发中避免各种坑,享受开发过程。 #### 如何安装Swoole 我们这里只讲解Linux,在Linux下需要我们在宝塔软件商店选择**PHP7**以上版本才是Swoole4,这里我们安装了php7.4版本(建议安装好Apache与Mysql)。 ![](data/files/edit/20/03/24/200324_14072628.png) 安装成功后,点击设置,在新窗口中选择安装扩展找到swoole4点击安装,确认即可 ![](data/files/edit/20/03/24/200324_14134636.png) 安装成功后查看phpinfo()信息就可以知道是否安装成功。 ![](data/files/edit/20/03/24/200324_14165338.png) 成功后按Ctrl+f搜索swoole就会找到 ![](data/files/edit/20/03/24/200324_14235381.png) 至此已经安装成功。 如果不能使用请检查防火墙是否开放了9503端口或您自定义的端口。 ------------ #### 如何使用Swoole linux 是需要命令,我们这里推荐**winscp**+**putty**,输入linux 地址帐号密码访问命令行,同样这里我们以宝塔为例,找到项目目录,通常在**/www/wwwroot**目录下对应的网站中。 我们建立一个简单的服务端demo,把代码复制保存到ws.php放入服务器的目录下即可。 ws.php ```php on('open', function ($ws, $request) { var_dump($request->fd, $request->get, $request->server); $ws->push($request->fd, "Welcome FoundPHP IM\n"); }); //监听消息事件 $ws->on('message', function ($ws, $frame) { echo "Message: {$frame->data}\n"; $ws->push($frame->fd, "server: {$frame->data}"); }); //监听连接关闭事件 $ws->on('close', function ($ws, $fd) { echo "client is closed\n"; }); //启动服务 $ws->start(); ?> ``` 在命令行输入: ` php ws.php` 执行后出现类似卡机一样的状态表示成功运行。 ![](data/files/edit/20/03/24/200324_14327293.png) 服务端的配置工作基本完成。
#### Swoole基础功能 创建websocket服务器对象,监听本机可以用0.0.0.0,端口9503,如果您服务器用其他端口也可设置为相同的即可。 `$ws = new Swoole\WebSocket\Server("0.0.0.0", 9503);` ------------
**监听WebSocket连接打开事件** `open` 这里我们用途作为握手,当客户端请求的时候返回一个项目标识Welcome FoundPHP **使用方法:** ```php: $ws->on('open',function ($ws, $fd) { //逻辑处理代码 }); ``` ------------
**监听WebSocket消息**
这个是开发的核心功能 `message` **使用方法:** ```php: $ws->on('message',function ($ws, $frame) { //逻辑处理代码 }); ``` ------------
**监听WebSocket连接关闭事件** `close` 主要用于捕捉退出或意外关闭的用户 **使用方法:** ```php: $ws->on('close',function ($ws, $fd) { //逻辑处理代码 }); ``` ------------
**启动websocket服务** ```php: $ws->start(); ``` 这个是最重要的,没有启动是不会执行监听的。