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

https://github.com/phoenixframework/phoenix_pubsub

Distributed PubSub and Presence platform for the Phoenix Framework
https://github.com/phoenixframework/phoenix_pubsub

Last synced: 5 months ago
JSON representation

Distributed PubSub and Presence platform for the Phoenix Framework

Awesome Lists containing this project

README

          

# Phoenix.PubSub

> Distributed PubSub and Presence platform for the Phoenix Framework

[![Build Status](https://github.com/phoenixframework/phoenix_pubsub/actions/workflows/ci.yml/badge.svg)](https://github.com/phoenixframework/phoenix_pubsub/actions/workflows/ci.yml)

## Usage

Add `phoenix_pubsub` to your list of dependencies in `mix.exs`:

```elixir
def deps do
[{:phoenix_pubsub, "~> 2.0"}]
end
```

Then start your PubSub instance:

```elixir
defmodule MyApp do
use Application

def start(_type, _args) do
children = [
{Phoenix.PubSub, name: MyApp.PubSub}
]

opts = [strategy: :one_for_one, name: MyApp.Supervisor]
Supervisor.start_link(children, opts)
end
end
```

Now broadcast and subscribe:

```elixir
Phoenix.PubSub.subscribe(MyApp.PubSub, "user:123")
Phoenix.PubSub.broadcast(MyApp.PubSub, "user:123", :hello_world)
```

## Testing

Testing by default spawns nodes internally for distributed tests.
To run tests that do not require clustering, exclude the `clustered` tag:

```shell
$ mix test --exclude clustered
```

If you have issues running the clustered tests try running:

```shell
$ epmd -daemon
```

before running the tests.