Introduction
The Timersie API offers robust features for real-time data interaction, especially useful for applications requiring instant updates on bookings and notifications. This guide provides an overview of how to use GraphQL subscriptions to track changes in real-time, ensuring your application stays responsive and up-to-date. We'll focus on two key aspects: booking updates and notification updates, using the Timersie API endpoints.
Best Practices
Handling Connection Stability: Ensure stable WebSocket connections for subscriptions. Implement reconnection strategies in case of network interruptions.
Optimizing Data Load: Subscribe only to necessary fields to reduce network load and improve performance.
Error Handling: Implement robust error handling to catch and manage subscription errors or interruptions gracefully.
Security Considerations: Secure your WebSocket connections and validate authentication tokens if required.
Efficient Resource Use: Unsubscribe from updates when not needed to conserve server and client resources.
Testing: Regularly test subscriptions to ensure they respond correctly to real-time changes and handle edge cases.
Booking Updates Subscription
GraphQL Subscription Query:
subscription {
booking(bookingId: "YOUR_BOOKING_ID") {
bookingId
createdAt
dateTimeFrom
dateTimeTo
duration
// Include other fields as needed
}
}
Node.js with Apollo Client:
import { ApolloClient, InMemoryCache, gql, HttpLink, split } from '@apollo/client';
import { getMainDefinition } from '@apollo/client/utilities';
import { WebSocketLink } from '@apollo/client/link/ws';
// WebSocket link for subscriptions
const wsLink = new WebSocketLink({
uri: 'wss://api.timerise.io/v1',
options: { reconnect: true }
});
// HTTP link for queries and mutations
const httpLink = new HttpLink({ uri: 'https://api.timerise.io/v1' });
// Split links for appropriate operations
const link = split(
({ query }) => {
const definition = getMainDefinition(query);
return (
definition.kind === 'OperationDefinition' &&
definition.operation === 'subscription'
);
},
wsLink,
httpLink,
);
// Apollo Client setup
const client = new ApolloClient({
link,
cache: new InMemoryCache(),
});
// Booking Subscription GraphQL Query
const BOOKING_SUBSCRIPTION = gql`
subscription Booking($bookingId: ID!) {
booking(bookingId: $bookingId) {
bookingId
createdAt
dateTimeFrom
dateTimeTo
duration
// Include other fields as needed
}
}
`;
// Executing the subscription
client.subscribe({
query: BOOKING_SUBSCRIPTION,
variables: { bookingId: "YOUR_BOOKING_ID" },
}).subscribe({
next(data) {
console.log(data);
},
error(err) {
console.error('Error:', err);
},
});
β
Notifications Updates Subscription
GraphQL Subscription Query:
subscription {
notifications(projectId: "YOUR_PROJECT_ID", roles: ["ROLE1", "ROLE2"]) {
notificationId
title
body
// Include other fields as needed
}
}
Node.js with Apollo Client:
Similar to the booking updates subscription, just replace BOOKING_SUBSCRIPTION
with the notifications query.
Summary
This guide demonstrates how to subscribe to real-time booking and notification updates using the Timersie API, with the specific endpoints provided. Replace YOUR_BOOKING_ID
and YOUR_PROJECT_ID
with your actual booking ID and project ID. The Apollo Client in Node.js is used for managing GraphQL WebSocket subscriptions, as CURL or Axios do not support this functionality.