{"id":16339791,"url":"https://github.com/jkachmar/purescript-mqttjs","last_synced_at":"2025-11-04T03:30:31.636Z","repository":{"id":93201806,"uuid":"108789449","full_name":"jkachmar/purescript-mqttjs","owner":"jkachmar","description":"Incomplete bindings to the MQTT.js library.","archived":false,"fork":false,"pushed_at":"2017-11-02T03:58:28.000Z","size":14,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-12-27T07:11:37.213Z","etag":null,"topics":["mqtt","purescript"],"latest_commit_sha":null,"homepage":null,"language":"PureScript","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/jkachmar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-10-30T01:58:11.000Z","updated_at":"2023-05-03T01:40:48.000Z","dependencies_parsed_at":"2023-04-27T14:26:33.121Z","dependency_job_id":null,"html_url":"https://github.com/jkachmar/purescript-mqttjs","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkachmar%2Fpurescript-mqttjs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkachmar%2Fpurescript-mqttjs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkachmar%2Fpurescript-mqttjs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkachmar%2Fpurescript-mqttjs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jkachmar","download_url":"https://codeload.github.com/jkachmar/purescript-mqttjs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239425363,"owners_count":19636346,"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":["mqtt","purescript"],"created_at":"2024-10-10T23:55:10.504Z","updated_at":"2025-11-04T03:30:31.535Z","avatar_url":"https://github.com/jkachmar.png","language":"PureScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# purescript-mqttjs\n\n[![Build Status](https://travis-ci.org/jkachmar/purescript-mqttjs.svg?branch=master)](https://travis-ci.org/jkachmar/purescript-mqttjs)\n\nA PureScript wrapper around [MQTT.js](https://github.com/mqttjs/MQTT.js).\n\n## Example Usage\n\n```purs\nimport Prelude\nimport Network.MQTT\nimport Network.MQTT.Coroutine\n\nimport Control.Coroutine (Process, ($$), await, runProcess)\nimport Control.Monad.Aff (Aff, Milliseconds(..), delay, forkAff, launchAff_)\nimport Control.Monad.Aff.Console (log)\nimport Control.Monad.Eff (Eff)\nimport Control.Monad.Eff.Class (liftEff)\nimport Control.Monad.Rec.Class (forever)\nimport Control.Monad.Trans.Class (lift)\nimport Data.Monoid (mempty)\nimport Data.Newtype (unwrap)\n\n-- MQTT broker address.\nbrokerUrl :: BrokerUrl\nbrokerUrl = BrokerUrl \"mqtt://broker.hivemq.com\"\n\n-- MQTT client connection options.\nconnOptions :: Options\nconnOptions =\n  { port     : 1883\n  , clientId : \"purescript-mqttjs-example\"\n  , username : mempty\n  , password : mempty\n  }\n\n-- Topic to subscribe and/or publish to on the MQTT broker.\ntopic :: Topic\ntopic = Topic \"test/purescript/mqttjs\"\n\n-- Message to publish to a topic on the MQTT broker.\nmessage :: Message\nmessage = Message \"example MQTT message\"\n\n-- Creates a coroutine consumer that prints MQTT events and contents.\nmqttConsumer :: MQTTConsumer _ Unit\nmqttConsumer = forever do\n  e \u003c- await\n  case e of\n    OnConnect -\u003e lift $ log \"Client connected!\"\n    OnClose   -\u003e lift $ log \"Client disconnected!\"\n    OnMessage t m -\u003e lift $ do\n      log $ \"Received a message from a subscription.\"\n      log $ \"Topic: \\\"\" \u003c\u003e unwrap t \u003c\u003e \"\\\" \\t-\\t Message: \\\"\" \u003c\u003e unwrap m \u003c\u003e \"\\\"\"\n\n-- Creates coroutine process that prints all MQTT events from a given client to\n-- the console.\nmqttProcess :: Client -\u003e Process (Aff _) Unit\nmqttProcess client =\n  let mqttProducer = mkMQTTProducer client\n  in  mqttProducer $$ mqttConsumer\n\nmain :: Eff _ Unit\nmain = launchAff_ $ do\n  client \u003c- liftEff $ connect brokerUrl connOptions\n  _ \u003c- forkAff $ runProcess $ mqttProcess client\n  \n  liftEff $ subscribe client topic\n  liftEff $ publish client topic message\n  \n  delay $ Milliseconds 1000.0\n  liftEff $ end client\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjkachmar%2Fpurescript-mqttjs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjkachmar%2Fpurescript-mqttjs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjkachmar%2Fpurescript-mqttjs/lists"}