README.md

# Simple PubSub for gleam

Simple PubSub for gleam, based on
[process groups](https://hex.pm/packages/process_groups).

[![Package Version](https://img.shields.io/hexpm/v/pubsub)](https://hex.pm/packages/simple_pubsub)
[![Hex Docs](https://img.shields.io/badge/hex-docs-ffaff3)](https://hexdocs.pm/simple_pubsub/)

## Usage

Add this  library to your Gleam project

```sh
gleam add simple_pubsub
```

And use it in your project

## Example

```gleam
import simple_pubsub as ps
import process_groups
import gleam/erlang/process

// Messages we want to send over the PubSub
type PubSubMessage{
    PubSubMessage
}

pub fn main() {
    // start process groups, needed for pubsub
    process_groups.start_link()

    // create a pubsub
    let pubsub = ps.new_pubsub()

    // subscribe, normally you would subscribe another process than this one
    let subscription = ps.subscribe(pubsub, process.self())

    // broadcast a message
    ps.broadcast(pubsub, PubSubMessage)

    // receive the message
    let assert Ok(PubSubMessage) = ps.receive(subscription, 100)
}
```
## Development

```sh
gleam run   # Run the project
gleam test  # Run the tests
gleam shell # Run an Erlang shell
```