An open API service indexing awesome lists of open source software.

https://github.com/py-package/masonite-socketio-driver

Extends default masonite broadcast driver to support SocketIO
https://github.com/py-package/masonite-socketio-driver

Last synced: 6 months ago
JSON representation

Extends default masonite broadcast driver to support SocketIO

Awesome Lists containing this project

README

        




PyPI
issues
Python Version
GitHub release (latest by date including pre-releases)
License
star
downloads
Code style: black

## SocketIO Driver

It's an extra broadcast driver support for SocketIO in masonite 4, it extends default masonite broadcast driver to support SocketIO.

**Masonite Broadcast Server and Client Library**
- [x] [Broadcast Server](https://github.com/py-package/masonite-broadcast-server)
- [x] [broadcast Client](https://github.com/py-package/masonite-broadcast-client)

**Setup**

Install package using pip:

```shell
pip install masonite-socketio-driver
```

Add provider inside config/providers.py.

```python
from socketio_driver.providers import SocketProvider

PROVIDERS = [
...,
# Application Providers
SocketProvider,
]
```

**Driver Config**
Add following configuration inside config/broadcast.py after `"pusher": {...},`

```python
"pusher": {...},
"socketio": {
"driver": "socketio",
"host": env("BROADCAST_HOST", "localhost"),
"port": env("BROADCAST_PORT", "6379")
},
```

Add following keys in `.env`.

```shell
BROADCAST_HOST=
BROADCAST_PORT=
```

Update the broadcast driver value to `socketio` in `.env`

```shell
BROADCAST_DRIVER=socketio
```

**Example**

```python
# broadcast to given channels

from masonite.controllers import Controller
from masonite.broadcasting import Broadcast

class YourController(Controller):

def your_function(self, broadcast: Broadcast):
broadcast_data = {
"message": "Hello World"
}
broadcast.channel(["channel-name"], "event-name", broadcast_data)
```

```python
# broadcast to selected users/clients

from masonite.controllers import Controller
from masonite.broadcasting import Broadcast
from socketio_driver.facades import Communicator

class YourController(Controller):

def your_function(self, broadcast: Broadcast):
broadcast_data = {
"message": "Hello World"
}
clients = Communicator.clients()
ids = [client.socketID for client in clients]
broadcast.channel(ids, "event-name", broadcast_data)

def or_another_function(self, broadcast: Broadcast):
broadcast_data = {
"message": "Hello World"
}
clients = Communicator.clients()
broadcast.driver("socketio").user(clients[0]).send("event-name", broadcast_data)
```

**Helpers**

Facade helpers...

```python
from socketio_driver.facades import Communicator
```

```python
# List all clients:
Communicator.clients()
```
```python
# Get client by sessionID
Communicator.client(id='client-session-id')
```
```python
# Delete all clients
Communicator.delete_all_clients()
```
```python
# Delete client by SocketClient instance
Communicator.delete(client)

```