comify-pubsub-client v1.3.0
Comify PubSub Client
A TypeScript client for Node, React, and React Native
Features
- Publish messages to Channels
- Subscribe to Channels
- TypeScript support for Node, React, and React Native
Installation
npm install comify-pubsub-clientPrerequisites
You will need the client token to authenticate your app. Get your keys from the Admin Portal.
Configuration
The client requires a configuration object with the following properties:
interface PubSubConfig {
userId: string; // Unique identifier for the client
clientToken: string; // API key for authentication
}Usage Examples
Next.js Usage
// pages/chat.tsx
import { PubSub } from 'commify-pubsub-client';
import { useEffect, useState } from 'react';
export default function ChatPage() {
const [messages, setMessages] = useState<any[]>([]);
useEffect(() => {
const pubsub = new PubSub({
userId: 'user123',
clientToken: process.env.NEXT_PUBLIC_API_KEY!
});
// Subscribe to messages
const subscribe = async () => {
const { unsubscribe } = await pubsub.subscribe('chat-room', (message) => {
setMessages(prev => [...prev, message]);
});
// Send a test message
await pubsub.publish('chat-room', {
text: 'Hello from Next.js!',
timestamp: new Date().toISOString()
});
// Cleanup on unmount
return unsubscribe;
};
subscribe().catch(console.error);
return () => {
// Cleanup will be handled by the subscribe function
};
}, []);
return (
<div>
{messages.map((msg, i) => (
<div key={i}>{msg.text}</div>
))}
</div>
);
}Node.js Usage
import { PubSub } from 'commify-pubsub-client';
async function setupPubSub() {
const pubsub = new PubSub({
userId: 'server1',
clientToken: process.env.API_KEY!
});
// Subscribe to system events
const { unsubscribe } = await pubsub.subscribe('system-events', (event) => {
console.log('System event received:', event);
});
// Publish system status
await pubsub.publish('system-events', {
type: 'STATUS',
status: 'healthy',
timestamp: new Date().toISOString()
});
// Handle graceful shutdown
process.on('SIGTERM', () => {
unsubscribe();
process.exit(0);
});
}
setupPubSub().catch(console.error);React Native / Expo Usage
import { PubSub } from 'commify-pubsub-client';
import { useEffect } from 'react';
function ChatScreen() {
useEffect(() => {
const pubsub = new PubSub({
userId: 'mobile1',
region: 'ap-south-1',
clientToken: 'your-api-key'
});
// Subscribe to messages
const subscribe = async () => {
const { unsubscribe } = await pubsub.subscribe('chat-room', (message) => {
console.log('New message:', message);
});
// Send a test message
await pubsub.publish('chat-room', {
text: 'Hello from React Native!',
timestamp: new Date().toISOString()
});
return unsubscribe;
};
subscribe().catch(console.error);
return () => {
// Cleanup will be handled by the subscribe function
};
}, []);
return (/* your component JSX */);
}Configuration Options
When initializing the PubSub client, you can provide the following configuration options:
userId: A unique identifier for your client instanceclientToken: Authentication token for secure credential management. Contact support to obtain a token.
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago