Package Exports
- e2ee-chat
- e2ee-chat/src/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (e2ee-chat) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
๐ฌ 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