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
- Host: GitHub
- URL: https://github.com/py-package/masonite-socketio-driver
- Owner: py-package
- License: mit
- Created: 2022-01-08T13:48:39.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2024-03-11T18:17:54.000Z (over 1 year ago)
- Last Synced: 2024-12-12T06:32:48.706Z (7 months ago)
- Language: Python
- Homepage:
- Size: 107 KB
- Stars: 12
- Watchers: 1
- Forks: 2
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
![]()
## 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 SocketProviderPROVIDERS = [
...,
# 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 channelsfrom masonite.controllers import Controller
from masonite.broadcasting import Broadcastclass 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/clientsfrom masonite.controllers import Controller
from masonite.broadcasting import Broadcast
from socketio_driver.facades import Communicatorclass 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)```