-
准备好laravel 框架
-
所需环境准备好 PHP7.0以上 等等。。。
-
安装swoole扩展
pecl install swoole
查看是否成功安装扩展
php -m
显示以下,代表成功安装。
-
安装swoole 4.3.4
链接: https://pan.baidu.com/s/155y4ZHq9lTn9MkjP_v3x3w 提取码: sf4m 复制这段内容后
下载解压。。
tar -xzvf v4.3.4.tar.gz
进入到解压好的目录
phpize && ./configure --with-php-config=/usr/local/php/bin/php-config(根据自己的环境替换绝对路径)
make && make install
若以上安装有提示报错,分开执行
验证是否安装成功php --ri swoole
查看版本
php --ri swoole | grep Version
-
如果以上安装成功,请忽略 ,,,,通过composer安装
composer require swooletw/laravel-swoole
-
生成配置文件,运行以下命令在/config命令看生成配置文件swoole_http.php并swoole_websocket.php
php artisan vendor:publish --tag=laravel-swoole
-
在 Laravel 应用中使用 Swoole 之前,先通过 Composer 安装 LaravelS 扩展包:
composer require hhxsv5/laravel-s
该命令会发布配置文件 laravels.php 到 config 目录下,以及脚本文件到 bin 目录下
php artisan laravels publish
如果想用websocket,在config/laravels.php下
'websocket' => [ 'enable' => true, 'handler' => \app\Services\WebSocketService::class, ],
namespace App\Services; use Hhxsv5\LaravelS\Swoole\WebSocketHandlerInterface; use Illuminate\Support\Facades\Log; use Swoole\Http\Request; use Swoole\WebSocket\Frame; use Swoole\WebSocket\Server; class WebSocketService implements WebSocketHandlerInterface { public function __construct() { } // 连接建立时触发 public function onOpen(Server $server, Request $request) { // 在触发 WebSocket 连接建立事件之前,Laravel 应用初始化的生命周期已经结束,你可以在这里获取 Laravel 请求和会话数据 // 调用 push 方法向客户端推送数据,fd 是客户端连接标识字段 Log::info('WebSocket 连接建立'); $server->push($request->fd, 'Welcome to WebSocket Server built on LaravelS'); } // 收到消息时触发 public function onMessage(Server $server, Frame $frame) { $server->push($frame->fd, 'This is a message sent from WebSocket Server at ' . date('Y-m-d H:i:s')); } // 关闭连接时触发 public function onClose(Server $server, $fd, $reactorId) { Log::info('WebSocket 连接关闭'); } }
此时根目录会多出一个bin目录
使用该命令启动 php laravels start
通过JS测试
ws = new WebSocket("ws://0.0.0.0:1215");
ws.onopen = function() {
var msg_obj = { "id": 22, "hello": "hello"};
var msg = JSON.stringify(msg_obj);
ws.send(msg);
};
ws.onmessage = function(e) {
alert("收到服务端的消息:" + e.data);
};