{"id":13509017,"url":"https://github.com/suvash/hulaaki","last_synced_at":"2025-03-30T13:31:11.603Z","repository":{"id":28760345,"uuid":"32282502","full_name":"suvash/hulaaki","owner":"suvash","description":"DEPRECATED : An Elixir library (driver) for clients communicating with MQTT brokers(via the MQTT 3.1.1 protocol).","archived":true,"fork":false,"pushed_at":"2020-06-21T21:24:42.000Z","size":249,"stargazers_count":115,"open_issues_count":0,"forks_count":22,"subscribers_count":10,"default_branch":"main","last_synced_at":"2024-05-01T21:50:48.180Z","etag":null,"topics":["beam","driver","elixir","erlang","genserver","messaging","mqtt"],"latest_commit_sha":null,"homepage":"","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/suvash.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-03-15T20:32:22.000Z","updated_at":"2023-09-01T08:24:47.000Z","dependencies_parsed_at":"2022-09-26T17:51:50.201Z","dependency_job_id":null,"html_url":"https://github.com/suvash/hulaaki","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suvash%2Fhulaaki","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suvash%2Fhulaaki/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suvash%2Fhulaaki/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suvash%2Fhulaaki/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/suvash","download_url":"https://codeload.github.com/suvash/hulaaki/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246230539,"owners_count":20744349,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["beam","driver","elixir","erlang","genserver","messaging","mqtt"],"created_at":"2024-08-01T02:01:01.811Z","updated_at":"2025-03-30T13:31:11.305Z","avatar_url":"https://github.com/suvash.png","language":"Elixir","funding_links":[],"categories":["Queue","Uncategorized"],"sub_categories":["Uncategorized"],"readme":"# DEPRECATED : Hulaaki (हुलाकी)\n\nFurther DEVELOPMENT of this library has now been STOPPED. Please consider looking into other alternatives. (such as [tortoise](https://github.com/gausby/tortoise))\n\n[![Build Status](https://travis-ci.org/suvash/hulaaki.svg?branch=master)](https://travis-ci.org/suvash/hulaaki?branch=master)\n[![Coverage Status](https://coveralls.io/repos/suvash/hulaaki/badge.svg?branch=master)](https://coveralls.io/r/suvash/hulaaki?branch=master)\n[![Hex.pm Project](https://img.shields.io/hexpm/v/hulaaki.svg)](https://hex.pm/packages/hulaaki)\n[![Inline docs](http://inch-ci.org/github/suvash/hulaaki.svg?branch=master)](http://inch-ci.org/github/suvash/hulaaki?branch=master)\n\nAn Elixir library (driver) for clients communicating with MQTT\nbrokers(via the MQTT 3.1.1 protocol).\n\nA quick tour of the features implemented right now:\n- Qos 0 and Qos 1 support available. QoS 2 not supported yet.\n- SSL/TLS support available.\n- Automatic Ping based on keep alive timeout.\n- Internal packet id generation for control packets with variable header.\n\n## Naming\n\nHulaaki(pronouced as who-laa-key) is the phonetic spelling of the word\nहुलाकी in Nepali, which translates to postman.\n\n## Usage\n\nBefore we get started, keep in mind that you need a running MQTT\nserver that you can connect to.\n\nAdd Hulaaki to your project dependencies in `mix.exs`\n\n```elixir\ndef deps do\n  [{:hulaaki, \"~\u003e 0.1.2\"} ]\nend\n```\n\nThe quickest way to get up and running with Hulaaki is to `use` the\nprovided `Client` module. This Genserver module defines function\ncallbacks that are intended to be overridden for required\nimplementations. The callbacks are defined for each MQTT message that\nis being sent and received from the server.\n\nHere's a [list of all the override-able callbacks to](lib/hulaaki/client.ex#L292-L318)use in your projects.\n\nAn example is present below that overrides some callbacks.\n\n```elixir\ndefmodule SampleClient do\n  use Hulaaki.Client\n\n  def on_connect_ack(options) do\n    IO.inspect options\n  end\n\n  def on_subscribed_publish(options) do\n    IO.inspect options\n  end\n\n  def on_subscribe_ack(options) do\n    IO.inspect options\n  end\n\n  def on_ping_response(options) do\n    IO.inspect options\n  end\nend\n```\n\nLoad the project in `iex -S mix` to explore the SampleClient\n\n```\n$ iex -S mix\n\n\u003e {:ok, pid} = SampleClient.start_link(%{})\n\n\u003e options = [client_id: \"some-name-7490\", host: \"localhost\", port: 8883, ssl: true]\n\n\u003e SampleClient.connect(pid, options)\n\n\u003e SampleClient.ping(pid)\n\n```\n\nPlease check the inline documentation\nand [client_tcp_test.exs](test/hulaaki/client_tcp_test.exs) for more example\nusage and test strategy.\n\n## Changelog\n\nPlease check the [CHANGELOG.md](https://github.com/suvash/hulaaki/blob/master/CHANGELOG.md).\n\n## Documentation\n\nPlease refer to the inline documentation and client tests to explore\nthe documentation for now.\n\n## Contributing\n\nPull requests with appropriate tests and improvements are welcome.\nMosquitto is currently used by the author to test the library.\n\n### Running the tests\n\nIf you already have Elixir runtime and a MQTT broker running (on\nstandard ports), you should just be able to run `mix test` as you\nwould do on other mix projects.\n\nAs prefered by the author, you can also use the provided Makefile to\nrun the tests. In that case, you'll need the following on your machine\n- GNU Make ( Version 4.0 and up )\n- [Docker Engine](https://docs.docker.com/engine/installation/) ( Version 17.06.1 and hopefully upwards )\n- [Docker Compose](https://github.com/docker/compose/releases) ( Version 1.16.1 and hopefully upwards )\n\n```\n# Get help\n$ make help\n\n# Start the MQTT servers (better to start separately to warm them up)\n$ make start\n\n# Run tests\n$ make test\n\n# Stop and cleanup docker instances etc.\n# make stop\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsuvash%2Fhulaaki","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsuvash%2Fhulaaki","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsuvash%2Fhulaaki/lists"}