@@ -66,9 +66,13 @@ First you have to install auth-helper:
66
66
``` php
67
67
namespace App;
68
68
69
- use Ollyxar\LaravelAuth\FileAuth;
70
- use Ollyxar\WebSockets\Frame;
71
- use Ollyxar\WebSockets\Worker;
69
+ use Generator;
70
+ use Ollyxar\LaravelAuth\RedisAuth;
71
+ use Ollyxar\WebSockets\{
72
+ Frame,
73
+ Handler as Worker,
74
+ Dispatcher
75
+ };
72
76
73
77
/**
74
78
* Class Handler
@@ -83,6 +87,13 @@ First you have to install auth-helper:
83
87
*/
84
88
protected $users = [];
85
89
90
+ /**
91
+ * Append connected user
92
+ *
93
+ * @param array $headers
94
+ * @param $socket
95
+ * @return bool
96
+ */
86
97
private function fillUser(array $headers, $socket): bool
87
98
{
88
99
if ($userId = FileAuth::getUserIdByHeaders($headers)) {
@@ -98,47 +109,51 @@ First you have to install auth-helper:
98
109
99
110
/**
100
111
* @param $client
112
+ * @return Generator
101
113
*/
102
- protected function onConnect($client): void
114
+ protected function onConnect($client): Generator
103
115
{
104
116
$userName = User::where('id', (int)$this->users[(int)$client])->first()->name;
105
-
106
- $this->sendToAll(Frame::encode(json_encode([
117
+ yield Dispatcher::async($this->broadcast(Frame::encode(json_encode([
107
118
'type' => 'system',
108
119
'message' => $userName . ' connected.'
109
- ])));
120
+ ])))) ;
110
121
}
111
122
112
123
/**
113
124
* @param array $headers
114
125
* @param $socket
115
126
* @return bool
116
127
*/
117
- protected function afterHandshake (array $headers, $socket): bool
128
+ protected function validateClient (array $headers, $socket): bool
118
129
{
119
130
return $this->fillUser($headers, $socket);
120
131
}
121
132
122
133
/**
123
134
* @param $clientNumber
135
+ * @return Generator
124
136
*/
125
- protected function onClose($clientNumber): void
137
+ protected function onClose($clientNumber): Generator
126
138
{
127
- $userName = User::where('id', (int)$this->users[$clientNumber])->first()->name;
139
+ $user = User::where('id', (int)@$this->users[$clientNumber])->first();
140
+ $userName = data_get($user, 'name', '[GUEST]');
128
141
129
- $this->sendToAll (Frame::encode(json_encode([
142
+ yield Dispatcher::async( $this->broadcast (Frame::encode(json_encode([
130
143
'type' => 'system',
131
144
'message' => $userName . " disconnected."
132
- ])));
133
-
145
+ ])))) ;
146
+
134
147
unset($this->users[$clientNumber]);
148
+ yield;
135
149
}
136
150
137
151
/**
138
152
* @param string $message
139
153
* @param int $socketId
154
+ * @return Generator
140
155
*/
141
- protected function onDirectMessage (string $message, int $socketId): void
156
+ protected function onClientMessage (string $message, int $socketId): Generator
142
157
{
143
158
$message = json_decode($message);
144
159
$userName = User::where('id', (int)$this->users[$socketId])->first()->name;
@@ -150,7 +165,7 @@ First you have to install auth-helper:
150
165
'message' => $userMessage
151
166
]));
152
167
153
- $this->sendToAll ($response);
168
+ yield Dispatcher::async( $this->broadcast ($response) );
154
169
}
155
170
}
156
171
```
0 commit comments