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.
Prerequisites
- Redis instance (Upstash recommended for serverless)
- Application built and tested locally
- Environment variables configured
Vercel (Next.js)
Setup
-
Install Vercel CLI:
-
Configure environment:
vercel env add REDIS_URL production
-
Deploy:
Configuration
vercel.json:
{
"env": {
"REDIS_URL": "@redis-url"
}
}
AWS Lambda
Using Serverless Framework
serverless.yml:
service: socket-serve-app
provider:
name: aws
runtime: nodejs20.x
environment:
REDIS_URL: ${env:REDIS_URL}
functions:
api:
handler: handler.main
events:
- http:
path: /{proxy+}
method: ANY
Docker
Dockerfile
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --production
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["npm", "start"]
Docker Compose
version: '3.8'
services:
app:
build: .
ports:
- "3000:3000"
environment:
REDIS_URL: redis://redis:6379
depends_on:
- redis
redis:
image: redis:7-alpine
ports:
- "6379:6379"
Environment Variables
Production checklist:
# Required
REDIS_URL=rediss://...
# Optional
NODE_ENV=production
PORT=3000
Redis Configuration
Upstash (Recommended)
Production-ready managed Redis:
- Create database at console.upstash.com
- Copy connection URL
- Add to deployment platform
AWS ElastiCache
aws elasticache create-cache-cluster \
--cache-cluster-id production-redis \
--cache-node-type cache.t3.micro \
--engine redis
Monitoring
Health Check Endpoint
app.get('/health', (req, res) => {
res.json({ status: 'ok' });
});
Redis Connection Check
redis.ping().then(() => {
console.log('Redis connected');
}).catch(err => {
console.error('Redis connection failed:', err);
});
Connection Pooling
const server = createSocketServer({
redisUrl: process.env.REDIS_URL!,
redisOptions: {
maxRetriesPerRequest: 3,
enableReadyCheck: true,
enableOfflineQueue: false
}
});
Scaling
Horizontal scaling is automatic with Redis-backed state. No sticky sessions required.
Security
TLS/SSL
Always use rediss:// (SSL) in production:
REDIS_URL=rediss://default:password@host:6379
Authentication
Configure Redis password:
redisOptions: {
password: process.env.REDIS_PASSWORD
}
Troubleshooting
Connection timeouts:
Increase timeout values in production:
redisOptions: {
connectTimeout: 10000,
commandTimeout: 5000
}
Memory issues:
Configure Redis eviction policy:
redis-cli CONFIG SET maxmemory-policy allkeys-lru
Next Steps