Go Library

The Golang backend library for Roam Location Subscription is used to subscribe to user's locations at a project level. It can also be used to subscribe to the locations of a single user.

roam-go supports subscription to the following location data:

  • Specific user

  • All users of a group

  • All users of the project

Installation

You can install our Golang library as mentioned below.

go get -u github.com/roam-ai/roam-go/roam

Methods

Subscribe to a single user

You can use the SDK to subscribe to single user's location and listen to it. You have to pass the userID which our Mobile SDKs return when a user is created.

userSubscription , err := roam.NewUserSubscription("apikey","userID")

Example Usage

package main

import (
	"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 main

import (
	"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 code below:

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)

Example Usage

You can think of this library as a wrapper around our REST API which needs your API key for authorization. It works at the project level and is fairly simple to use:

  • Create an instance of a subscription with your API key.

  • Define your custom callback function and pass it with the subscribe() method, which will be executed on every location received from the server.

  • To stop receiving data, call the unsubscribe() method. Check out this example code:

package main

import (
	"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)
}

Need Help?

If you have any problems or issues regarding our SDK, feel free to create a github issue or submit a request on Roam Help.

Last updated