- laravel项目中的配置
如果你已经成功安装了laravelS组件,并用他接管了你的laravel项目,那么接下来就是实现一个websocket服务器的类,
类声明在项目app目录下的Services(没有就自己建一个)目录,
也许这些命名空间已经多的把你吓了一跳,但其实他们都源自你安装的laravelS组件,类的实现部分你也许并不感到陌生,没错,
他们就是按照swoole websocket原生类进行了封装
Hhxsv5类空间的源码可以参照 项目空间下的vendor/hhxsv5/laravel-s/src/Swoole/Coroutine
<?php
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 mywebsocket implements WebSocketHandlerInterface
{
public function __construct()
{
Log::info('launching laravel-swoole websocket');
}
public function onOpen(Server $server, Request $request)
{
Log::info('launching swoole websocket');
$server->push($request->fd,'欢迎使用,基于swoole的laravel websocket');
}
public function onMessage(Server $server, Frame $frame)
{
$server->push($frame->fd,date('Y-m-dH:i:s').'服务器响应你的请求');
}
public function onClose(Server $server, $fd, $reactorId)
{
Log::info('websocket服务器关闭');
}
}
然后,你就要到config目录下找到laravels.php,进行一番配置。
找到下列关联数组的键名,并作配置
'websocket' => [
'enable' => true,
'handler'=>\App\Services\mywebsocket::class,#这个就是上述声明的类
//'handler' => XxxWebSocketHandler::class,
],
'swoole' => [
...
// 每隔 60s 检测一次所有连接,如果某个连接在 600s 内都没有发送任何数据,则关闭该连接
'heartbeat_idle_time' => 600,
'heartbeat_check_interval' => 60,
...
],
(未完待续)