next
обратный вызов здесь не служит хорошей цели, потому что он синхронный.Так как событие socket.io connection
может запускаться несколько раз, его нельзя преобразовать в обещание для упрощения создания цепочки, поэтому для него лучше оставаться основанным на обратном вызове.
Это может быть:
var socketIo = require('socket.io')
exports.register = (server, options) => {
var io = socketIo(server.listener);
return onConnect => {
io.on('connection', onConnect);
};
}
Таким образом, функция соединения создается один раз:
const myConnection = register(myServer);
И используется через приложение:
myConnection(client => {
...
});
В этой ситуации также могут быть полезны наблюдаемые, например, RxJS.
Если сокет не должен поддерживать переподключения, это можно упростить до:
exports.register = (server, options) => {
var io = socketIo(server.listener);
return new Promise(resolve => {
io.once('connection', resolve);
});
}
Обещание подключения создается один раз:
Таким образом, функция подключения создается один раз:
const myConnection = register(myServer);
И используется через приложение:
const client = await myConnection;
...