# Phoenix.PubSub
> Distributed PubSub and Presence platform for the Phoenix Framework
[![Build Status](https://api.travis-ci.org/phoenixframework/phoenix_pubsub.svg)](https://travis-ci.org/phoenixframework/phoenix_pubsub)
## 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.