Node.js SDK

The Gluesync Node.js SDK provides a powerful JavaScript interface for building integrations, modules, and extensions that communicate with the Core Hub.
This project is Open Source
Overview
The Node.js SDK offers a modern, promise-based API for interacting with Gluesync’s Core Hub. Built with JavaScript/TypeScript developers in mind, it provides an intuitive interface for real-time data synchronization, event processing, and Core Hub integration.
Key Features
-
Promise-based API
-
Async/await support
-
Modern JavaScript patterns
-
TypeScript type definitions
-
-
Core Hub Handshake
-
WebSocket connection management
-
Protocol version negotiation
-
Connection resiliency
-
Automatic reconnection
-
-
Authentication
-
API key authentication
-
JWT token management
-
Session handling
-
Secure credential storage
-
-
Security
-
SSL/TLS support with JKS certificates
-
Secure token management
-
Verified connections
-
-
(Coming soon) Event Handling
-
Real-time event subscription
-
Event stream processing
-
Custom event handlers
-
Event filtering and routing
-
-
(Coming soon) Data Processing
-
JSON serialization/deserialization
-
Schema validation
-
Transformation utilities
-
Error handling middleware
-
Basic Usage
import { GluesyncClient } from 'gluesync-sdk';
async function main() {
// Initialize the client with CoreHub address and license file path
// For fixed address:
const client = new GluesyncClient({
host: 'localhost',
port: 1717,
licenseFilePath: '/path/to/gs-license.dat',
moduleTag: 'my-module'
});
// Or use UDP autodiscovery (set host to null)
// const client = new GluesyncClient({
// host: null, // Will use UDP autodiscovery to find CoreHub
// port: 1717,
// licenseFilePath: '/path/to/gs-license.dat',
// moduleTag: 'my-module'
// });
// Connect to CoreHub
await client.connect();
// The JWT token for API requests is available after connection
const jwtToken = client.token;
console.log(`Connected with token: ${jwtToken}`);
// Do your work here
// Disconnect when done
await client.disconnect();
}
main().catch(console.error);
Advanced Features
Using UDP Autodiscovery
import { GluesyncClient } from 'gluesync-sdk';
async function main() {
// Initialize the client without specifying a host to use autodiscovery
const client = new GluesyncClient({
// host parameter is omitted to enable autodiscovery
licenseFilePath: '/path/to/gs-license.dat',
moduleTag: 'my-module'
});
// Connect will automatically discover the CoreHub on the network
await client.connect();
// Do your work here
// Disconnect when done
await client.disconnect();
}
main().catch(console.error);
You can also use the environment variable CORE_HUB_ADDRESS
to bypass autodiscovery:
// Set this to bypass autodiscovery
process.env.CORE_HUB_ADDRESS = '192.168.1.100';
Using SSL/TLS with JKS Certificates
import { GluesyncClient } from 'gluesync-sdk';
async function main() {
const client = new GluesyncClient({
host: 'corehub.example.com',
port: 1717,
licenseFilePath: '/path/to/gs-license.dat',
moduleTag: 'my-module',
ssl: true,
keystorePath: '/path/to/Gluesync.com.jks',
keystorePassword: 'your-password'
});
await client.connect();
// ...
}
main().catch(console.error);
Event Handling
import { GluesyncClient } from 'gluesync-sdk';
// Option 1: Using callback functions
async function main() {
const client = new GluesyncClient({
host: 'localhost',
port: 1717,
licenseFilePath: '/path/to/gs-license.dat',
moduleTag: 'my-module'
});
// Set up event handlers
client.onConnected = (token) => {
console.log(`Connected! Received token: ${token}`);
};
client.onDisconnected = (reason) => {
console.log(`Disconnected: ${reason}`);
};
client.onError = (error) => {
console.log(`Error: ${error}`);
};
await client.connect();
// Keep the connection alive for some time
await new Promise(resolve => setTimeout(resolve, 3600000));
await client.disconnect();
}
// Option 2: Using event emitter API
async function mainWithEvents() {
const client = new GluesyncClient({
host: 'localhost',
port: 1717,
licenseFilePath: '/path/to/gs-license.dat',
moduleTag: 'my-module'
});
// Set up event listeners
client.on('connected', (token) => {
console.log(`Connected! Received token: ${token}`);
});
client.on('disconnected', (reason) => {
console.log(`Disconnected: ${reason}`);
});
client.on('error', (error) => {
console.log(`Error: ${error}`);
});
await client.connect();
// Keep the connection alive for some time
await new Promise(resolve => setTimeout(resolve, 3600000));
await client.disconnect();
}
main().catch(console.error);
Configuration Options
The GluesyncClient constructor accepts the following configuration options:
Parameter | Type | Required | Default | Description |
---|---|---|---|---|
host |
string | null |
No |
null |
The hostname or IP of the CoreHub. If null, autodiscovery will be used |
port |
number |
No |
1717 |
The port number for the CoreHub WebSocket |
licenseFilePath |
string |
No |
"gs-license.dat" |
Path to the gs-license.dat file |
moduleTag |
string |
No |
"nodejs-module" |
The module identifier tag |
ssl |
boolean |
No |
false |
Whether to use SSL/TLS |
keystorePath |
string |
No |
null |
Path to JKS keystore file (required if ssl=true) |
keystorePassword |
string |
No |
null |
Password for the JKS keystore |
pingInterval |
number |
No |
1000 |
Interval in milliseconds between ping messages |
timeout |
number |
No |
10000 |
Connection timeout in milliseconds |
discoveryStartPort |
number |
No |
1717 |
The base port number for UDP discovery |
discoveryPortRange |
number |
No |
10 |
Number of ports to scan for UDP discovery |
API Reference
GluesyncClient
Methods
-
connect()
: Establishes a WebSocket connection to the CoreHub -
disconnect()
: Closes the WebSocket connection
Properties
-
token
: The JWT token received from CoreHub -
connectionStatus
: Current status of the connection -
isConnected
: Returns true if connected, false otherwise
Event Handlers
-
onConnected(token)
: Called when connection is successfully established -
onDisconnected(reason)
: Called when connection is closed -
onError(error)
: Called when an error occurs
Events (EventEmitter API)
-
connected
: Emitted when connection is successfully established -
disconnected
: Emitted when connection is closed -
error
: Emitted when an error occurs
For complete API documentation, please visit the GitLab repository: Node.js SDK on GitLab.
Source Code & Contributing
The Node.js SDK is open source and available on GitLab:
-
Repository: Node.js SDK on GitLab
-
Issues: Please report bugs and feature requests through the GitLab issue tracker
-
Contributing: See the CONTRIBUTING section in the repository for guidelines
License
The Gluesync Node.js SDK is dual-licensed under the following licenses:
-
GNU General Public License (GPL) Version 3 You may use, modify, and distribute this software under the terms of the GPL v3. See the LICENSE-GPL file or GPL v3 for details. This option is available at no cost, but any derivative works must also be licensed under GPL v3.
-
MOLO17 Commercial License Alternatively, you may use this software under the MOLO17 Commercial License, which includes a warranty and permits proprietary use. Contact MOLO17 at info@molo17.com for licensing terms and conditions.
You must choose one of these licenses to use this software. Using this software implies acceptance of one of these licenses.
Copyright © 2025 MOLO17. All rights reserved.