Constructor #
This is the main entry point to communicate with Kuzzle. Each instance represents a connection to Kuzzle with specific options.
This interface implements the KuzzleEventEmitter interface
Arguments #
NewKuzzle(protocol connection.Connection) (*Kuzzle, error)| Argument | Type | Description |
|---|---|---|
protocol | connection.Connection | The protocol used by the SDK instance |
protocol #
A Protocol is a structure implementing the connection.Connection interface. The available protocols are:
websocket.Websocket
The protocol must be instantiated and passed to the constructor. It takes the following arguments:
| Argument | Type | Description | Required |
|---|---|---|---|
host | string | Kuzzle hostname to connect to | yes |
options | types.Options | Kuzzle connection configuration | yes |
The options parameter of the protocol constructor has the following properties. You can use standard getter/setter to use these properties.
| Option | Type | Description | Default | Required |
|---|---|---|---|---|
autoQueue | bool | Automatically queue all requests during offline mode | false | no |
autoReconnect | bool | Automatically reconnect after a connection loss | true | no |
autoReplay | bool | Automatically replay queued requests on a reconnected event | false | no |
autoResubscribe | bool | Automatically renew all subscriptions on a reconnected event | true | no |
offlineMode | int | Offline mode configuration. types.Manual or types.Auto | types.Manual | no |
port | int | Target Kuzzle port | 7512 | no |
queueTTL | int | Time a queued request is kept during offline mode, in milliseconds | 120000 | no |
queueMaxSize | int | Number of maximum requests kept during offline mode | 500 | no |
replayInterval | Duration | Delay between each replayed requests, in milliseconds | 10 | no |
reconnectionDelay | Duration | number of milliseconds between reconnection attempts | 1000 | no |
sslConnection | bool | Switch Kuzzle connection to SSL mode | false | no |
volatile | VolatileData | Common volatile data, will be sent to all future requests | - | no |
Getter & Setter #
These properties of the Kuzzle struct can be writable. For example, you can read the volatile property via getVolatile() and set it via setVolatile().
| Property name | Type | Description | Availability |
|---|---|---|---|
autoQueue | bool | Automatically queue all requests during offline mode | Get/Set |
autoReconnect | bool | Automatically reconnect after a connection loss | Get |
autoReplay | bool | Automatically replay queued requests on a reconnected event | Get/Set |
autoResubscribe | bool | Automatically renew all subscriptions on a reconnected event | Get/Set |
host | string | Target Kuzzle host | Get |
port | int | Target Kuzzle port | Get |
jwt | string | Token used in requests for authentication. | Get/Set |
offlineQueue | QueryObject | Contains the queued requests during offline mode | Get |
offlineQueueLoader | OfflineQueueLoader | Called before dequeuing requests after exiting offline mode, to add items at the beginning of the offline queue | Get/Set |
queueFilter | QueueFilter | Called during offline mode. Takes a request object as arguments and returns a bool, indicating if a request can be queued | Get/Set |
queueMaxSize | int | Number of maximum requests kept during offline mode | Get/Set |
queueTTL | Duration | Time a queued request is kept during offline mode, in milliseconds | Get/Set |
replayInterval | Duration | Delay between each replayed requests | Get/Set |
reconnectionDelay | Duration | Number of milliseconds between reconnection attempts | Get |
sslConnection | bool | Connect to Kuzzle using SSL | Get |
volatile | VolatileData | Common volatile data, will be sent to all future requests | Get/Set |
Notes:
- multiple methods allow passing specific
volatiledata. Thesevolatiledata will be merged with the global Kuzzlevolatileobject when sending the request, with the request specificvolatiletaking priority over the global ones. - the
queueFilterproperty is a function taking aQueryObjectas an argument. This object is the request sent to Kuzzle, following the Kuzzle API format - if
queueTTLis set to0, requests are kept indefinitely - The offline buffer acts like a first-in first-out (FIFO) queue, meaning that if the
queueMaxSizelimit is reached, older requests are discarded to make room for new requests - if
queueMaxSizeis set to0, an unlimited number of requests is kept until the buffer is flushed - the
offlineQueueLoadermust be set with a function, taking no argument, and returning an array of objects containing aquerymember with a Kuzzle query to be replayed, and an optionalcbmember with the corresponding callback to invoke with the query result - updates to
autoReconnect,reconnectionDelayandsslConnectionproperties will only take effect on nextconnectcall
Return #
A Kuzzle struct and an error struct. The error struct is nil if everything was ok.
Usage #
In a first step, you have to create a new connection.Connection and pass it to the constructor. By now the only connection available is websocket.Websocket.
copts := types.NewOptions()
copts.SetPort(7512)
copts.SetAutoResubscribe(false)
conn := websocket.NewWebSocket("kuzzle", copts)
k, _ := kuzzle.NewKuzzle(conn, nil)