[英]how to implement middleware in socket.io like express in NodeJS?
socket.io中如何實現這樣的中間件? 請幫忙
快遞APP
var myLogger = function (req, res, next) {
console.log('LOGGED')
next()
}
app.use(myLogger)
app.get('/', function (req, res) {
res.send('Hello World!')
})
SOCKET APP (我正在使用快速模式但它不起作用)
var myLogger = function (data,next) {
console.log('DOING DATA VALIDATION...')
next()
}
io.use(myLogger)
io.on('someEvent/', function (data, callback) {
callback('Hello World!')
})
錯誤:next() 未定義!
app.use(function (req, res, next) {
req.io = io;
next();
});
這會為每個請求分配一個套接字 object。
如果有人還在疑惑。
在所有 sockets 上使用中間件:
io.use((socket, next) => {
// isValid is just a dummy function
if (isValid(socket.request)) {
next();
} else {
next(new Error("invalid"));
}
});
這個例子來自socket.io的官方文檔
為特定客戶端使用中間件:
io.on('connection', async (client) => {
client.use((socket, next) => {
console.log(`got event: ${socket[0]} in client middleware, moving on with next() just like in express`)
next()
});
// rest of your code
newConnection(client)
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.