Metadata-Version: 2.1
Name: adsocket
Version: 0.1.1
Summary: Websocket protocol
Home-page: UNKNOWN
License: MIT
Platform: any
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Development Status :: 4 - Beta
Description-Content-Type: text/markdown
Requires-Dist: aiohttp (==3.6.2)
Requires-Dist: aioredis (==1.3.1)
Requires-Dist: async-timeout (==3.0.1)
Requires-Dist: raven (==6.3.0)
Requires-Dist: uvloop (==0.14.0)

# ADSocket

WebSocket server based on [aiohttp](https://github.com/aio-libs/aiohttp).


## Install

Using python package

``` bash
pip install adsocket
```

## How it works

To start the very basic server, this command will do:
 ``` bash
adsocket
```
assuming that you have redis server started on localhost listening on port 6379.

Now you should be able to connect to server on ws://localhost:5000

## Basic usage

Adsocket should work out of the box, however it's probably not what you would expect. 
To customize adsocket you can create custom channels, authentication or commands.

Example of setting file

```python
from adsocket.conf.default_settings import *  # NOQA

CHANNELS = {
    'global': {
        'driver': 'my_package.channels.GlobalChannel',
        'create_on_startup': True,
    },
    'user': {
        'driver': 'my_package.channels.MyUserChannel',
        'create_on_startup': False,
    }
}

AUTHENTICATION_CLASSES = (
    'sraps_socket.auth.SrapsAuth',
)

DISCONNECT_UNAUTHENTICATED = False

```
To apply changes to adsocket you need to export environment variable with 
path to settings

 ``` bash
export ADSOCKET_SETTINGS=my_package.settings
```

## Sending messages from you application

See [adsocket-transport](https://github.com/AwesomeDevelopersUG/adsocket-transport).

## Documentation

@Todo

## Goals
Out motivation to behind is follows:
 * High scalability
 * High performance
 * Easy customization
 * Easy extendability

### Channels

All communication between server and client is through channels. 
Any client (understand websocket connection) can be member of n channels. 
There is no automatic subscription to channel so in order ot receive messages 
from server client have to subscribe to channels he or she wants to receive 
messages from or publish messages to.

#### Custom channels

@Todo


### Commands

@Todo

#### Custom command

@Todo


