swooletw / laravel-swoole

High performance HTTP server based on Swoole. Speed up your Laravel or Lumen applications.
MIT License
4.03k stars 388 forks source link

Auth user problem on web socket connection #539

Closed sa3eid closed 1 year ago

sa3eid commented 1 year ago

Make sure you read Issues Guideline and answer these questions before submitting your issue. Thanks! (Any non-English issues will be closed immediately.)

  1. Please provide your PHP and Swoole version. (php -v and php --ri swoole)

PHP: 8.0.2 Swoole: 5.0.1

  1. Please provide your Laravel/Lumen version.

Laravel: 9.19

  1. Which release version of this package are you using?

Laravel Swoole: 2.12

  1. What did you do? If possible, provide a recipe for reproducing the error.

` 'defaults' => [ 'guard' => 'web', 'passwords' => 'users', ],

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],
],

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\Models\User::class,
    ],

    // 'users' => [
    //     'driver' => 'database',
    //     'table' => 'users',
    // ],
],

`

` 'providers' => [

    /*
     * Laravel Framework Service Providers...
     */
    Illuminate\Auth\AuthServiceProvider::class,
    Illuminate\Broadcasting\BroadcastServiceProvider::class,
    Illuminate\Bus\BusServiceProvider::class,
    Illuminate\Cache\CacheServiceProvider::class,
    Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class,
    Illuminate\Cookie\CookieServiceProvider::class,
    Illuminate\Database\DatabaseServiceProvider::class,
    Illuminate\Encryption\EncryptionServiceProvider::class,
    Illuminate\Filesystem\FilesystemServiceProvider::class,
    Illuminate\Foundation\Providers\FoundationServiceProvider::class,
    Illuminate\Hashing\HashServiceProvider::class,
    Illuminate\Mail\MailServiceProvider::class,
    Illuminate\Notifications\NotificationServiceProvider::class,
    Illuminate\Pagination\PaginationServiceProvider::class,
    Illuminate\Pipeline\PipelineServiceProvider::class,
    Illuminate\Queue\QueueServiceProvider::class,
    Illuminate\Redis\RedisServiceProvider::class,
    Illuminate\Auth\Passwords\PasswordResetServiceProvider::class,
    Illuminate\Session\SessionServiceProvider::class,
    Illuminate\Translation\TranslationServiceProvider::class,
    Illuminate\Validation\ValidationServiceProvider::class,
    Illuminate\View\ViewServiceProvider::class,

    /*
     * Package Service Providers...
     */

    /*
     * Application Service Providers...
     */
    App\Providers\AppServiceProvider::class,
    App\Providers\AuthServiceProvider::class,
    // App\Providers\BroadcastServiceProvider::class,
    App\Providers\EventServiceProvider::class,
    App\Providers\RouteServiceProvider::class,
    SwooleTW\Http\LaravelServiceProvider::class,

],

`

` return [

'server' => [
    'host' => env('SWOOLE_HTTP_HOST', '127.0.0.1'),
    'port' => env('SWOOLE_HTTP_PORT', '1215'),
    'public_path' => base_path('public'),
    // Determine if to use swoole to respond request for static files
    'handle_static_files' => env('SWOOLE_HANDLE_STATIC', true),
    'access_log' => env('SWOOLE_HTTP_ACCESS_LOG', false),
    // You must add --enable-openssl while compiling Swoole
    // Put `SWOOLE_SOCK_TCP | SWOOLE_SSL` if you want to enable SSL
    'socket_type' => SWOOLE_SOCK_TCP,
    'process_type' => SWOOLE_PROCESS,
    'options' => [
        'pid_file' => env('SWOOLE_HTTP_PID_FILE', base_path('storage/logs/swoole_http.pid')),
        'log_file' => env('SWOOLE_HTTP_LOG_FILE', base_path('storage/logs/swoole_http.log')),
        'daemonize' => env('SWOOLE_HTTP_DAEMONIZE', false),
        // Normally this value should be 1~4 times larger according to your cpu cores.
        'reactor_num' => env('SWOOLE_HTTP_REACTOR_NUM', swoole_cpu_num()),
        'worker_num' => env('SWOOLE_HTTP_WORKER_NUM', swoole_cpu_num()),
        'task_worker_num' => env('SWOOLE_HTTP_TASK_WORKER_NUM', swoole_cpu_num()),
        // The data to receive can't be larger than buffer_output_size.
        'package_max_length' => 20 * 1024 * 1024,
        // The data to send can't be larger than buffer_output_size.
        'buffer_output_size' => 10 * 1024 * 1024,
        // Max buffer size for socket connections
        'socket_buffer_size' => 128 * 1024 * 1024,
        // Worker will restart after processing this number of requests
        'max_request' => 3000,
        // Enable coroutine send
        'send_yield' => true,
        // You must add --enable-openssl while compiling Swoole
        'ssl_cert_file' => null,
        'ssl_key_file' => null,
    ],
],

/*
|--------------------------------------------------------------------------
| Enable to turn on websocket server.
|--------------------------------------------------------------------------
*/
'websocket' => [
    'enabled' => env('SWOOLE_HTTP_WEBSOCKET', true),
],

/*
|--------------------------------------------------------------------------
| Hot reload configuration
|--------------------------------------------------------------------------
*/
'hot_reload' => [
    'enabled' => env('SWOOLE_HOT_RELOAD_ENABLE', false),
    'recursively' => env('SWOOLE_HOT_RELOAD_RECURSIVELY', true),
    'directory' => env('SWOOLE_HOT_RELOAD_DIRECTORY', base_path()),
    'log' => env('SWOOLE_HOT_RELOAD_LOG', true),
    'filter' => env('SWOOLE_HOT_RELOAD_FILTER', '.php'),
],

/*
|--------------------------------------------------------------------------
| Console output will be transferred to response content if enabled.
|--------------------------------------------------------------------------
*/
'ob_output' => env('SWOOLE_OB_OUTPUT', true),

/*
|--------------------------------------------------------------------------
| Pre-resolved instances here will be resolved when sandbox created.
|--------------------------------------------------------------------------
*/
'pre_resolved' => [
    'view', 'files', 'session', 'session.store', 'routes',
    'db', 'db.factory', 'cache', 'cache.store', 'config', 'cookie',
    'encrypter', 'hash', 'router', 'translator', 'url', 'log',
],

/*
|--------------------------------------------------------------------------
| Instances here will be cleared on every request.
|--------------------------------------------------------------------------
*/
'instances' => [
    'auth',
],

/*
|--------------------------------------------------------------------------
| Providers here will be registered on every request.
|--------------------------------------------------------------------------
*/
'providers' => [
    Illuminate\Pagination\PaginationServiceProvider::class,
],

/*
|--------------------------------------------------------------------------
| Resetters for sandbox app.
|--------------------------------------------------------------------------
*/
'resetters' => [
    SwooleTW\Http\Server\Resetters\ResetConfig::class,
    SwooleTW\Http\Server\Resetters\ResetSession::class,
    SwooleTW\Http\Server\Resetters\ResetCookie::class,
    SwooleTW\Http\Server\Resetters\ClearInstances::class,
    SwooleTW\Http\Server\Resetters\BindRequest::class,
    SwooleTW\Http\Server\Resetters\RebindKernelContainer::class,
    SwooleTW\Http\Server\Resetters\RebindRouterContainer::class,
    SwooleTW\Http\Server\Resetters\RebindViewContainer::class,
    SwooleTW\Http\Server\Resetters\ResetProviders::class,
],

/*
|--------------------------------------------------------------------------
| Define your swoole tables here.
|
| @see https://www.swoole.co.uk/docs/modules/swoole-table
|--------------------------------------------------------------------------
*/
'tables' => [
    // 'table_name' => [
    //     'size' => 1024,
    //     'columns' => [
    //         ['name' => 'column_name', 'type' => Table::TYPE_STRING, 'size' => 1024],
    //     ]
    // ],
],

];

`

`

return [ /* -------------------------------------------------------------------------- Websocket handler for onOpen and onClose callback Replace this handler if you want to customize your websocket handler
*/
'handler' => SwooleTW\Http\Websocket\SocketIO\WebsocketHandler::class,

/*
|--------------------------------------------------------------------------
| Default frame parser
| Replace it if you want to customize your websocket payload
|--------------------------------------------------------------------------
*/
'parser' => SwooleTW\Http\Websocket\SocketIO\SocketIOParser::class,

/*
|--------------------------------------------------------------------------
| Websocket route file path
|--------------------------------------------------------------------------
*/
'route_file' => base_path('routes/websocket.php'),

/*
|--------------------------------------------------------------------------
| Default middleware for on connect request
|--------------------------------------------------------------------------
*/
'middleware' => [
    SwooleTW\Http\Websocket\Middleware\DecryptCookies::class,
    SwooleTW\Http\Websocket\Middleware\StartSession::class,
    SwooleTW\Http\Websocket\Middleware\Authenticate::class,
],

/*
|--------------------------------------------------------------------------
| Websocket handler for customized onHandShake callback
|--------------------------------------------------------------------------
*/
'handshake' => [
    'enabled' => false,
    'handler' => SwooleTW\Http\Websocket\HandShakeHandler::class,
],

/*
|--------------------------------------------------------------------------
| Default websocket driver
|--------------------------------------------------------------------------
*/
'default' => 'table',

/*
|--------------------------------------------------------------------------
| Websocket client's heartbeat interval (ms)
|--------------------------------------------------------------------------
*/
'ping_interval' => 25000,

/*
|--------------------------------------------------------------------------
| Websocket client's heartbeat interval timeout (ms)
|--------------------------------------------------------------------------
*/
'ping_timeout' => 60000,

/*
|--------------------------------------------------------------------------
| Room drivers mapping
|--------------------------------------------------------------------------
*/
'drivers' => [
    'table' => SwooleTW\Http\Websocket\Rooms\TableRoom::class,
    'redis' => SwooleTW\Http\Websocket\Rooms\RedisRoom::class,
],

/*
|--------------------------------------------------------------------------
| Room drivers settings
|--------------------------------------------------------------------------
*/
'settings' => [

    'table' => [
        'room_rows' => 4096,
        'room_size' => 2048,
        'client_rows' => 8192,
        'client_size' => 2048,
    ],

    'redis' => [
        'server' => [
            'host' => env('REDIS_HOST', '127.0.0.1'),
            'password' => env('REDIS_PASSWORD', null),
            'port' => env('REDIS_PORT', 6379),
            'database' => 0,
            'persistent' => true,
        ],
        'options' => [
            //
        ],
        'prefix' => 'swoole:',
    ],
],

];

`

Auth provider resolving for requests

  1. What did you see instead?

it gives me:

NULL NULL

huiyonghkw commented 1 year ago

is sloved?