daycry/websocket

Websocket using Ratchet Websocket technology for CodeIgniter 4

v1.0.11 2023-11-08 11:24 UTC

This package is auto-updated.

Last update: 2024-04-08 12:23:05 UTC


README

CodeIgniter 4 WebSocket Library

Donate

CodeIgniter WebSocket library. It allows you to make powerfull realtime applications by using Ratchet Socketo.me Websocket technology.

Table of Contents

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

composer require daycry/websocket

Publishing Resource

You need to publish the resources for the default configuration

php spark websocket:publish

Usage

First start CodeIgniter

php spark serve

If you run the server in a different port, follow the command below.

PHP spark serve --port=9092

Finally start Websocket Server

php public/index.php chat start

WOW You made it !!! ✔️

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

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)

$client = new \WebSocket\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 and callbacks

There are few predefined callbacks, here's the list :

auth, event, close, timer

Please check Websocket.php controller To get the Defining example of various Callback Function

    public function start()
    {
        $ws = service('Websocket');
        $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 Websocket.php config file in Your config directory.

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

Daycry - @daycry9 - https://github.com/daycry

Acknowledgements