Documentation Index
Fetch the complete documentation index at: https://socket-serve.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Installation
npm install socket-serve ioredis express
npm install -D @types/express
Server Setup
Create server.ts:
import express from 'express';
import { createSocketServer } from 'socket-serve';
import { createExpressAdapter } from 'socket-serve/adapters';
const app = express();
const port = process.env.PORT || 3000;
const socketServer = createSocketServer({
redisUrl: process.env.REDIS_URL!
});
socketServer.on('connection', (socket) => {
console.log('Client connected:', socket.id);
socket.on('message', (data) => {
socket.emit('response', { echo: data });
});
socket.on('disconnect', () => {
console.log('Client disconnected:', socket.id);
});
});
// Mount socket adapter
const socketAdapter = createExpressAdapter(socketServer);
app.use('/socket', socketAdapter);
// Static files
app.use(express.static('public'));
app.listen(port, () => {
console.log(`Server running on http://localhost:${port}`);
});
Client Setup
Create public/index.html:
<!DOCTYPE html>
<html>
<head>
<title>socket-serve Demo</title>
</head>
<body>
<div id="status">Connecting...</div>
<script type="module">
import { connect } from '/socket/client.js';
const socket = connect('/socket');
const status = document.getElementById('status');
socket.on('connect', () => {
status.textContent = 'Connected';
});
socket.on('disconnect', () => {
status.textContent = 'Disconnected';
});
</script>
</body>
</html>
Environment Configuration
Create .env:
REDIS_URL=redis://localhost:6379
PORT=3000
Development
Production Build
// tsconfig.json
{
"compilerOptions": {
"target": "ES2020",
"module": "ESNext",
"outDir": "dist",
"strict": true,
"esModuleInterop": true
}
}
Build and run:
npx tsc
node dist/server.js
Deployment
Docker
Dockerfile:
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --production
COPY . .
EXPOSE 3000
CMD ["node", "dist/server.js"]
Environment Variables
Production configuration:
REDIS_URL=rediss://default:xxx@xxx.upstash.io:6379
PORT=3000
NODE_ENV=production
Next Steps