takielias / codeigniter4-websocket

Codeigniter 4 Websocket Built for real-time application
https://ebuz.xyz
MIT License
81 stars 26 forks source link
codeigniter4 real-time websocket

[![Latest Version on Packagist][ico-version]][link-packagist] [![Total Downloads][ico-downloads]][link-downloads] [![Contributors][contributors-shield]][contributors-url] [![Forks][forks-shield]][forks-url] [![Stargazers][stars-shield]][stars-url] [![Issues][issues-shield]][issues-url] [![MIT License][license-shield]][license-url] [![LinkedIn][linkedin-shield]][linkedin-url]


Logo

CodeIgniter 4 WebSocket Library

takielias

CodeIgniter WebSocket library. It allows you to make powerfull realtime applications by using Ratchet [Socketo.me](http://socketo.me) Websocket technology. #### WebSocket Library for Codeigniter 3.x https://github.com/takielias/codeigniter-websocket ## Table of Contents * [Getting Started](#getting-started) * [Prerequisites](#prerequisites) * [Installation](#installation) * [Publishing](#publishing) * [Usage](#usage) * [Authentication and callbacks](#authentication-and-callbacks) * [Roadmap](#roadmap) * [Contributing](#contributing) * [License](#license) * [Contact](#contact) * [Acknowledgements](#acknowledgements) ## Getting Started This is an example of how you may give instructions on setting up your project locally. To get a local copy up and running follow these simple example steps. ### Prerequisites - PHP 7.2+ - CodeIgniter Framework (4.* recommended) - Composer - PHP sockets extension enabled ### Installation ```sh composer require takielias/codeigniter4-websocket @dev ``` ### Publishing Resource You need to publish the resources for the default configuration ```sh php spark websocket:publish ``` ## Usage First start CodeIgniter ```sh php spark serve ``` If you run the server in a different port, follow the command below. ```sh PHP spark serve --port=9092 ``` **Finally start Websocket Server** ```sh php public/index.php Websocket start ``` **N.B** : Don't forget to add the following line in app/Config/Routes.php `app/Config/Routes.php` ```php $routes->setAutoRoute(true); ``` **WOW You made it !!!** :heavy_check_mark: Open two pages of your project on the following URL with different IDs : **For default Port** `http://localhost:8080/Websocket/user/1` `http://localhost:8080/Websocket/user/2` **For custom Port** `http://localhost:9092/Websocket/user/1` `http://localhost:9092/Websocket/user/2` ## Authentication and callbacks There are few predefined callbacks, here's the list : ` auth, event, close, citimer, roomjoin, roomleave, roomchat ` Please check Websocket.php controller To get the Defining example of various Callback Function ```sh public function start() { $ws = service('CodeigniterWebsocket'); $ws->set_callback('auth', array($this, '_auth')); $ws->set_callback('event', array($this, '_event')); $ws->run(); } public function _auth($datas = null) { // Here you can verify everything you want to perform user login. return (!empty($datas->user_id)) ? $datas->user_id : false; } public function _event($datas = null) { // Here you can do everything you want, each time message is received echo 'Hey ! I\'m an EVENT callback' . PHP_EOL; } ``` Two Callback functions have been defined in the above example. First One is **auth** & the Second one is **event**. ###### 🔨🔨🔨 If you need to customize Callback function, Please check the CodeigniterWebsocker.php config file in Your config directory. ## Roadmap See the [open issues](https://github.com/takielias/codeigniter4-websocket/issues) for a list of proposed features (and known issues). ## Contributing Contributions are what makes the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**. 1. Fork the Project 2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`) 3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`) 4. Push to the Branch (`git push origin feature/AmazingFeature`) 5. Open a Pull Request ## License Distributed under the MIT License. See `LICENSE` for more information. ## Contact Taki Elias - [@takiele](https://twitter.com/takiele) - [https://ebuz.xyz](https://ebuz.xyz) - taki.elias@gmail.com ## Acknowledgements * [http://socketo.me](https://github.com/ratchetphp/Ratchet) * [Websocket Client for PHP](https://github.com/Textalk/websocket-php) * [Choose an Open Source License](https://choosealicense.com) * [GitHub Pages](https://pages.github.com) * [Animate.css](https://daneden.github.io/animate.css) * [Loaders.css](https://connoratherton.com/loaders) * [Smooth Scroll](https://github.com/cferdinandi/smooth-scroll) * [Font Awesome](https://fontawesome.com) ## Support on Buy Me A Coffee Hey dude! Help me out for a cup of ☕! takielias

[contributors-shield]: https://img.shields.io/github/contributors/takielias/codeigniter4-websocket.svg?style=flat-square [contributors-url]: https://github.com/takielias/codeigniter4-websocket/graphs/contributors [forks-shield]: https://img.shields.io/github/forks/takielias/codeigniter4-websocket.svg?style=flat-square [forks-url]: https://github.com/takielias/codeigniter4-websocket/network/members [stars-shield]: https://img.shields.io/github/stars/takielias/codeigniter4-websocket.svg?style=flat-square [stars-url]: https://github.com/takielias/codeigniter4-websocket/stargazers [issues-shield]: https://img.shields.io/github/issues/takielias/codeigniter4-websocket.svg?style=flat-square [issues-url]: https://github.com/takielias/codeigniter4-websocket/issues [license-shield]: https://img.shields.io/github/license/takielias/codeigniter4-websocket.svg?style=flat-square [license-url]: https://github.com/takielias/codeigniter4-websocket/blob/master/LICENSE.txt [linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=flat-square&logo=linkedin&colorB=555 [linkedin-url]: https://linkedin.com/in/takielias [product-screenshot]: images/screenshot.png [ico-version]: https://img.shields.io/packagist/v/takielias/codeigniter4-websocket.svg?style=flat-square [ico-downloads]: https://img.shields.io/packagist/dt/takielias/codeigniter4-websocket.svg?style=flat-square [link-packagist]: https://packagist.org/packages/takielias/codeigniter4-websocket [link-downloads]: https://packagist.org/packages/takielias/codeigniter4-websocket [link-author]: https://github.com/takielias