57 lines
1.1 KiB
Markdown
57 lines
1.1 KiB
Markdown
|
# 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.
|