簡體   English   中英

如何像NodeJS中的express一樣在socket.io中實現中間件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM