https://github.com/roam-ai/roam-go
Go Pub/Sub Library; GoLang library to subscribe to realtime location updates from Roam.ai's location SDKs.
https://github.com/roam-ai/roam-go
golang-library listen location-sdk pubsub roam sdk subscription
Last synced: 2 months ago
JSON representation
Go Pub/Sub Library; GoLang library to subscribe to realtime location updates from Roam.ai's location SDKs.
- Host: GitHub
- URL: https://github.com/roam-ai/roam-go
- Owner: roam-ai
- License: mit
- Created: 2021-01-12T12:52:38.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2021-02-09T12:07:29.000Z (about 4 years ago)
- Last Synced: 2024-06-20T05:15:30.002Z (11 months ago)
- Topics: golang-library, listen, location-sdk, pubsub, roam, sdk, subscription
- Language: Go
- Homepage: https://roam.ai
- Size: 7.81 KB
- Stars: 7
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# roam-go
A Golang backend library for GeoSpark Location Subscription. It is used to subscribe to user's locations at project level or location of a single user.roam-go supports subscription to the following location data:
* Specific user
* All users of a group
* All users of project## Installation
You can install our Golang library as mentioned below.
```
go get -u github.com/roam-ai/roam-go/roam
```## Example Usage
You can think this library as a wrapper around our REST API which needs your API key for authorization and it works as per project level. It is fairly simple to use:
- Create an instance of subscription with your API key.
- Define your custom callback function and pass it with Subscribe method, which will be executed on every location received from the server.
- To stop receiving data, call Unsubscribe method.
The below example usage code:```
package mainimport (
"fmt"
"github.com/roam-ai/roam-go/roam"
"time"
)
func main() {
// initialization
subscription , _ := roam.NewProjectSubscription("apikey")var handler roam.MessageHandler = func(userID string , payload []byte){
fmt.Println(userID)
fmt.Println(string(payload))
}subscription.Subscribe(handler)
}
```### Subscribe to a single user
You can use the SDK to subscribe to single user's location and listen to it. You have pass the user id which our Mobile SDK's returns during creating a user.```
userSubscription , err := roam.NewUserSubscription("apikey","userID")
```
#### Example Usage
```
package mainimport (
"fmt"
"github.com/roam-ai/roam-go/roam"
"time"
)
func main() {
// initialization
subscription , _ := roam.NewUserSubscription("apikey","userID")// Declaring handler function
var handler roam.MessageHandler = func(userID string , payload []byte){
// logic
}// start subscription
subscription.Subscribe(handler)
}
```### Subscribe to a group:
You can also use the SDK to subscribe to a user group and listen to their location updates.
You can get the group_id from our developer API for user grouping and use the group id when creating the client instance to listen to location at user group level.```
groupSubscription , err := roam.NewGroupSubscription("apikey","groupID")
```
```
package mainimport (
"fmt"
"github.com/roam-ai/roam-go/roam"
"time"
)
func main() {
// initialization
subscription , _ := roam.NewGroupSubscription("apikey","groupID")// Declaring handler function
var handler roam.MessageHandler = func(userID string , payload []byte){
// logic
}// start subscription
subscription.Subscribe(handler)
}
```### Unsubscribe
At any point, if you wish to unsubscribe from location updates, use the below code:
```
subscription.Unsubscribe()
```### Handler Function
While calling Subscribe method on subscription, you will need to pass a handler func as parameter.
Handler func should have userID of type string and payload of type []byte and will be invoked on every location update received.
```
var handler roam.MessageHandler = func(userID string , payload []byte){
// logic
}subscription.Subscribe(handler)
```