README.md

## Phoenix.Pubsub.VerneMQ

[![Build Status](https://travis-ci.org/larshesel/phoenix_pubsub_vernemq.svg?branch=master)](https://travis-ci.org/larshesel/phoenix_pubsub_vernemq)

A VerneMQ PubSub adapter for the
[Phoenix framework](http://www.phoenixframework.org/).

This adapter was built for [VerneMQ](https://verne.mq/) but should
work with any MQTT server.

## Configuration

In order to use the VerneMQ pubsub adapter in phoenix, add it and
`vmq_commons` as a dendency to your `mix.exs` file:

```Elixir
defp deps do
  [{:vmq_commons, git: "https://github.com/erlio/vmq_commons.git", compile: "rebar compile"},
   {:phoenix_pubsub_vernemq, "~> 0.0.3"}],
end
```

Note that you need [rebar](https://github.com/basho/rebar) installed
in order to compile the `vmq_commons` dependency.

Then configure your endpoint appropriately:

```Elixir
config :my_app, MyApp.Endpoint,
  ...
  pubsub: [name: HelloPhoenix.PubSub,
           adapter: Phoenix.PubSub.VerneMQ,
           host: "localhost",
           port: 1883,
           client_id: "test_client"]
```

The complete list of configuration options:

* `:host` - The MQTT server hostname or ip, default: `"localhost"`
* `:port` - The MQTT server port number, default: `1883`
* `:username` - MQTT user name
* `:password` - MQTT password
* `:client_id` - MQTT client id, default: `"phoenix_vernemq"`
* `:publish_qos` - QoS level for publishing, default: `0`
* `:subscribe_qos` - QoS level for subscribing, default: `0`
* `:clean_session` - default: `true`
* `:reconnect_timeout` - default in seconds: `5`
* `:keepalive_interval` - defaults: `60`

## Notes

This work was inspired by the
[Redis pubsub adapter](https://github.com/phoenixframework/phoenix_pubsub_redis)
for Phoenix.

The VerneMQ pubsub adapter is licensed under the Apache License Version 2.