💬 Realtime Chat SDK (Node.js / React)
This SDK allows you to easily integrate end-to-end encrypted 1-to-1 realtime chat into your app using our hosted microservice.
🚀 Features
- 🔒 End-to-end AES encrypted messages
- ⚡️ Socket-based realtime messaging
- 🧩 Multi-tenant DB support via
apiKey
- 👥 Role-based user handling (client, handler, admin)
- 📥 Chat history via REST API
- 🔄 Dynamic handler takeover logic
- ✅ Works with Node.js, React.js, Next.js (App Router compatible)
📦 Installation
npm install e2ee-chat
🧪 Quick Start (React or Next.js)
"use client";
import React, { useState } from "react";
import useChat from "e2ee-chat/useChat";
export default function ChatBox() {
const [input, setInput] = useState("");
const { messages, sendMessage, joined } = useChat({
serverUrl: "http://localhost:4000",
roomId: "session_abc123",
userId: "user1",
userType: "client",
secretKey: "shared-secret-123",
apiKey: "your-api-key-here",
});
return (
<div>
<h2>Chat</h2>
<ul>
{messages.map((m, i) => (
<li key={i}>
<b>{m.senderId}</b>: {m.decryptedText}
</li>
))}
</ul>
<input value={input} onChange={(e) => setInput(e.target.value)} />
<button onClick={() => sendMessage(input, "user2")}>Send</button>
</div>
);
}
🧩 useChat Options
Option | Type | Required | Description |
---|---|---|---|
serverUrl |
string | ✅ | Your hosted chat server URL |
roomId |
string | ✅ | Session ID for the chat |
userId |
string | ✅ | Your current user's ID |
userType |
string | ✅ | client , handler , or admin |
secretKey |
string | ✅ | AES secret used to encrypt/decrypt |
apiKey |
string | ✅ | API key to identify your org DB |
📥 Accessing Chat History
Chat history is fetched automatically when the user joins. All messages are decrypted with your secretKey
.
🔁 Admin Takeover Logic
You can trigger handler takeover:
const { takeover } = useChat(...);
takeover(); // Makes current user the new handler
🏗 Works in:
- ✅ React.js
- ✅ Next.js App Router
- ✅ Node.js test scripts
📁 Server Setup (Hosted Microservice)
To host your own server, clone chat-server and set up .env
:
PORT=4000
MONGO_URI=your-default-db-uri
🧠 Multi-Tenant Support
Register your apiKey
and mongoUri
in the Tenant
collection to isolate DB access per organization.
📮 Support
For issues, contact: support@yourchatservice.com
⚖️ License
MIT