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.
🐛 or feature 💪
Bugs Be free to open an issue or send pull request
Support on Beerpay
Hey dude! Help me out for a couple of