SocketIOController::upgrade()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 26
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 13
nc 3
nop 1
dl 0
loc 26
rs 9.8333
c 0
b 0
f 0
1
<?php
2
3
namespace SwooleTW\Http\Controllers;
4
5
use Illuminate\Http\Request;
6
use Illuminate\Support\Facades\Config;
7
8
class SocketIOController
9
{
10
    protected $transports = ['polling', 'websocket'];
11
12
    public function upgrade(Request $request)
13
    {
14
        if (! in_array($request->input('transport'), $this->transports)) {
15
            return response()->json(
16
                [
17
                    'code' => 0,
18
                    'message' => 'Transport unknown',
19
                ],
20
                400
21
            );
22
        }
23
24
        if ($request->has('sid')) {
25
            return '1:6';
26
        }
27
28
        $payload = json_encode(
29
            [
30
                'sid' => base64_encode(uniqid()),
31
                'upgrades' => ['websocket'],
32
                'pingInterval' => Config::get('swoole_websocket.ping_interval'),
33
                'pingTimeout' => Config::get('swoole_websocket.ping_timeout'),
34
            ]
35
        );
36
37
        return '97:0' . $payload . '2:40';
38
    }
39
40
    public function reject()
41
    {
42
        return response()->json(
43
            [
44
                'code' => 3,
45
                'message' => 'Bad request',
46
            ],
47
            400
48
        );
49
    }
50
}
51