cls-session
v1.1.2
Published
CLS using async hooks instead of async-listener
Downloads
25
Maintainers
Readme
cls-session
Continuation Local Storage works like thread-local storage in threaded programming. This is a implementation of CLS using async_hooks instead of async-listener.
Installation
It requires node v8.2.1 or higher for ES2015 and async_hooks support.
$ npm install cls-session
Usage
const Session = require('cls-session')
const session = new Session()
function timeout (id) {
session.scope(() => {
session.set('a', id)
setTimeout(() => {
const a = session.get('a')
console.log(a)
})
})
}
timeout(1)
timeout(2)
timeout(3)
// Output:
// 1
// 2
// 3
Middleware in koa
import Session from 'cls-session'
import Koa from 'koa'
const app = new Koa()
const session = new Session()
app.use(session.middleware())
app.use(async (ctx, next) => {
session.set('userId', 10086)
await next()
})
app.use((ctx) => {
const userId = session.get('userId')
ctx.body = userId
})
app.listen(3200)
Middleware in express
import Session from 'cls-session'
import express from 'express'
const app = express()
const session = new Session()
app.use(session.expressMiddleware())
app.use((req, res, next) => {
session.set('userId', 10086)
next()
})
app.use((req, res, next) => {
const userId = session.get('userId')
res.send(userId)
})
app.listen(3200, () => {
console.log('Listen 3200')
})
API
session.scope(callback: () => Promise | any): Promise
Create a new context on which values can be set or read.Run all the functions that are called (either directly, or indirectly through asynchronous functions that take callbacks themselves) from the provided callback within the scope.
session.set(key: any, value: any)
Set a value on the current continuation context.
session.get(key: any): any
Get a value on the current continuation context.
session.middleware()
A middleware of koa.
session.expressMiddleware()
A middleware of express.