Courier Is Now Open-Source
Here's the new addition to our open source roster: Courier, a persisting connection that pushes content from our server to the app.
![Courier Is Now Open-Source](/content/images/size/w2000/2022/07/Blog-banners_sept-2020--Recovered---1--2.png)
By Deepanshu
Courier is the superhighway between mobile devices and our backend servers. It’s a persisting connection through which we’re able to push content from our server to the app. We’re excited to announce that we have open-sourced three Courier libraries for mobile and backend clients:
These client libraries can be used to create a long-running connection with an MQTT broker on Android, iOS, and Go applications.
Courier is a scalable, low latency, and persistent network transmission mechanism for mobile<>server communication built over MQTT protocol.
Features
Quality of Service
All Courier libraries support three QoS levels for reliable message delivery: 0 (at most once), 1 (at least once) and 2(exactly once).
Automatic Reconnect
All Courier libraries are able to reconnect automatically whenever there are network or other unexpected failures using a connection retry policy.
Flexible Encoder/Decoder support
All Courier libraries provide support for converting MQTT message payload to or from any custom message type.
Clean & easy to understand APIs
All Courier libraries provide clean APIs for connect/disconnect, subscribe/unsubscribe and publish/receivefunctionalities. The APIs are simple and easy to understand.
Observability
Courier libraries also provide events for tracking end-to-end message delivery and connection lifecycle.
Documentation
All Courier libraries are well-documented with examples. Also, these libraries have their own individual documentations hosted on github pages.
courier-android : https://gojek.github.io/courier-android
courier-iOS : https://gojek.github.io/courier-iOS
courier-go : https://gojek.github.io/courier-go
You can read more about courier here. Also, you can find the end-to-end chat example created using these courier libraries.
Other library-specific features:
![](https://cdn-images-1.medium.com/max/1600/1*8f4LP6z_aWlDuiYERk_lVg.png)
We have also covered Android & iOS libraries in detail in our blogs.
Oh, it’s a five-part series, so your tech reading for the weekend is sorted. 🖖
![](https://blog.gojek.io/content/images/2021/08/GoFoodCourier-01-2.jpg)
How to reach out?
You can join our discord server to connect with the team behind this amazing project.
![](https://cdn-images-1.medium.com/max/1600/1*IPWwoozDxeKoXMtXEyrtLw.png)
Find more stories from our vault, here.
Also, we’re hiring! Check out open job positions by clicking below:
![](https://cdn-images-1.medium.com/max/1600/1*c2_eIvR2WDUWnP6YmzcGpQ.jpeg)