CodeIgniter WebSocket Library
CodeIgniter WebSocket library. It allows you to make powerfull realtime applications by using Ratchet (Socketo.me & ratchet_client) Websocket technology.
https://github.com/takielias/codeigniter4-websocket
WebSocket Library for Codeigniter 4.xIf you Face any problem you may check CodeIgniter WebSocket Example https://github.com/takielias/codeigniter-websocket-example
π Dependencies
- PHP 5.6+
- CodeIgniter Framework (3.1.* recommanded)
- Composer
- PHP sockets extension enabled
π° Installation
β‘οΈ Step 1 : Library installation by Composer
Just by running following command in the folder of your project :
composer require takielias/codeigniter-websocket
Don't forget to include your autoload to CI config file :
$config['composer_autoload'] = FCPATH.'vendor/autoload.php';
β‘οΈ Step 2 : One command Setup
If you want Single command installation just Execute the Command in the Project directory
N.B: It will make 2 new controllers Welcome.php and User.php
php vendor/takielias/codeigniter-websocket/install.php --app_path=application
Here app_path defines your default Codeigniter Application directory Name
WOW You made it !!!
Open two pages of your project on following url with different IDs :
http://localhost/your project directory/index.php/user/index/1
http://localhost/your project directory/index.php/user/index/2
If you have something like that, everything is ok for you:
You can try typing and sending something in each page (see cmd for more logs).
β‘οΈ Run the Websocket server Manually
If you want to enable debug mode type the command bellow in you'r project folder :
php index.php welcome index
If you see the message the message bellow, you are done (don't close your cmd) !
β‘οΈ Test the App
π₯ !
Broadcast messages with your php App If you want to broadcast message with php script or something else you can use library like textalk/websocket (who is included in my composer.json as required library)
Note : The first message is mandatory and always here to perform authentication
$client = new Client('ws://0.0.0.0:8282');
$client->send(json_encode(array('user_id' => 1, 'message' => null)));
$client->send(json_encode(array('user_id' => 1, 'message' => 'Super cool message to myself!')));
β»οΈ
Authentication & callbacks The library allow you to define some callbacks, here's an example :
class Welcome extends CI_Controller
{
public function index()
{
// Load package path
$this->load->add_package_path(FCPATH . 'vendor/takielias/codeigniter-websocket');
$this->load->library('Codeigniter_websocket');
$this->load->remove_package_path(FCPATH . 'vendor/takielias/codeigniter-websocket');
// Run server
$this->codeigniter_websocket->set_callback('auth', array($this, '_auth'));
$this->codeigniter_websocket->set_callback('event', array($this, '_event'));
$this->codeigniter_websocket->run();
}
public function _auth($datas = null)
{
// Here you can verify everything you want to perform user login.
// However, method must return integer (client ID) if auth succedeed and false if not.
return (!empty($datas->user_id)) ? $datas->user_id : false;
}
public function _event($datas = null)
{
// Here you can do everyting you want, each time message is received
echo 'Hey ! I\'m an EVENT callback'.PHP_EOL;
}
}
- Auth type callback is called at first message posted from client.
- Event type callback is called on every message posted.
How to receive response into Codeigniter Controller ?
Please look at the Welcome.php controller.
public function index()
{
// Load package path
$this->load->add_package_path(FCPATH . 'vendor/takielias/codeigniter-websocket');
$this->load->library('Codeigniter_websocket');
$this->load->remove_package_path(FCPATH . 'vendor/takielias/codeigniter-websocket');
// Run server
$this->codeigniter_websocket->set_callback('auth', array($this, '_auth'));
$this->codeigniter_websocket->set_callback('event', array($this, '_event'));
$this->codeigniter_websocket->set_callback('roomleave', array($this, '_roomleave'));
$this->codeigniter_websocket->run();
}
public function _roomleave($data = null)
{
// Here you will receive data from the frontend roomleave event trigger.
echo 'Hey ! I\'m a room leave EVENT callback' . PHP_EOL;
}
The main concept is the callback function.
You would receive the response into the defined function. You can trigger the event from the front end like below using jQuery
socket.send(JSON.stringify({
'type': 'roomleave',
'room_name': targetName,
'user_id': "buzz4rd"
}));
It would trigger the function below
public function _roomleave($data = null)
{
// Here you will receive data from fron tend roomleave event trigger.
echo 'Hey ! I\'m a room leave EVENT callback' . PHP_EOL;
}
You May Check Room Chat using PHP websocket. It was built using this
π or feature πͺ
Bugs Be free to open an issue or send pull request
Support on Buy Me A Coffee
Hey dude! Help me out for a cup of