On the first part i just introduce a Ratchet Server using in Cakephp 4. and the next part I was update the client demo connect with Ratchet Server using HTML, CSS basic with send to server command, you can check it back from here
So on the next part i will try to continue make a server broadcast demo connect with all client in Ratchet Server
How to implement Ratchet Socket on cakephp 4 and make a detail demo broadcast message from server to client (Part 3)
Explore My Other Channel for More Cool and Valuable Insights
👉 Youtube Learn Tech Tips👉 Tiktok
👉 Facebook:on my src/controller/Admin/AccountsController.php
on this file we will call the CSocketClient::BROADCAST_LOCK_SINGLE_ACCOUNT_TYPE
public function lock($id)
{
$this->request->allowMethod(['post']);
$account = $this->Accounts->get($id);
$this->Accounts->updateAll([
'enabled' => $account->enabled == 1 ? 0 : 1,
], [
'id' => $id,
]);
$obj_AccountTokens = TableRegistry::get('AccountTokens');
$data_AccountTokens = $obj_AccountTokens->get_obj_by_account_id_type($id, MyHelper::TYPE_REGISTER_APP);
if ($data_AccountTokens) {
CSocketClient::broadcastLockSingleAccount($data_AccountTokens->token);
$response = [
'message' => CSocketClient::BROADCAST_LOCK_SINGLE_ACCOUNT_TYPE,
'data' => $data_AccountTokens->token,
];
$this->write_ratchetServer_log(null, $response, json_encode($response));
}
$this->Flash->success(__('data_is_updated'));
return $this->redirect(['action' => 'index']);
}
Here is src/MyHelper/CSocketClient.php
<?php
declare(strict_types=1);
namespace App\MyHelper;
use Cake\Core\Configure;
use Cake\Routing\Router;
use Cake\Filesystem\File;
use Cake\Log\Log;
use Cake\Event\Event;
class CSocketClient
{
public const BROADCAST_LOCK_SINGLE_ACCOUNT_TYPE = "BROADCAST_LOCK_SINGLE_ACCOUNT";
public static function broadcastLockSingleAccount($token) {
$log = self::LOG;
\Ratchet\Client\connect(Configure::read('websocket'))->then(function ($conn) use($token, $log) {
$conn->on('message', function ($msg) use ($conn, $log) {
$conn->close();
});
$joinCommand = [
'cmd' => CSocketClient::BROADCAST_LOCK_SINGLE_ACCOUNT_TYPE,
'message' => $token, // client check token is it will be kick
];
$conn->send(json_encode($joinCommand));
$msg = "[BROADCAST_LOCK_SINGLE_ACCOUNT_TYPE] running\n";
Log::info($msg, ['scope' => $log]);
}, function ($e) use ($log) {
$msg = "[BROADCAST_LOCK_SINGLE_ACCOUNT_TYPE] Could not connect: {$e->getMessage()}\n";
Log::info($msg, ['scope' => $log]);
});
}
}
Thank you for reading this post. I hope you found it helpful and easy to follow. If you have any feedback or questions about
How to implement Ratchet Socket on cakephp 4 and make a detail demo broadcast message from server to client (Part 3) ,
please share them in the comments below. I would love to hear from you and discuss this topic further
✋✋✋✋
Webzone Tech Tips, all things Tech Tips for web development
- I am Zidane, See you next time soon ✋✋✋✋