Что производительнее и экономнее, копия функции через bind или функция обертка
На сервере есть код вэбсокета вида:
wss.on('connect', function (ws, request) {
const socketData = {
login: 'krakazyabra'
}
ws.on('close', function () {
// какой то код
console.log(`Пользователь ${socketData.login} отключился`);
// и еще код
}
}
хочу вынести функцию закрытия соединения во вне, однако функция использует внешнюю переменную socketData.
Получаем следующий код функции закрытия соединения. Т.е. теперь в функцию надо передать переменную socketData
function closeConnect (socketData) {
// какой то код
console.log(`Пользователь ${socketData.login} отключился`);
// и еще код
}
Вот 2 варианта, которые у меня получились, но оба не очень нравятся, возможно, есть И-й вариант?
Через .bind
wss.on('connect', function (ws, request) {
const socketData = {
login: 'krakazyabra'
}
ws.on('close', closeConnect.bind(null, socketData));
})
Через функцию обертку
wss.on('connect', function (ws, request) {
const socketData = {
login: 'krakazyabra'
}
ws.on('close', function () {
closeConnect(socketData)
});
})
Вопрос: Как более правильно и читаемо сделать с точки зрения производительности и экономии памяти, через .bind или фукнцию обертку?
На сколько я понимаю, bind будет для каждого соединения создавать новую функцию и держать ее в памяти. 100 пользователей, 100 копий фукнции. В то же время, фукнция обертка смотрится не очень.