Переадресация соединения socket.io/engine.io на другой сервер
Мы пытаемся найти лучший подход к нашей проблеме балансировки нагрузки с помощью веб-сокетов.
Изначально Websocket может подключаться к любому серверу, на этом сервере будет работать некоторая логика, а затем, при необходимости, он будет "перенаправлять" клиента на соответствующий сервер.
Есть ли в socket.io/engine.io способ перенаправлять / пересылать соединения?
Что-то вроде:
io.use(function(socket){
// ... logic
if(logic === true){
socket.redirect("172.10.10.2:3000");
}
});
Я знаю об этом socket.redirect
не является действительной функцией, но есть что-то подобное?
1 ответ
socket.io не поддерживает что-то вроде socket.redirect
Но вы можете использовать Nginx для создания прокси-сервера для балансировки нагрузки и использовать socket.io-redis для создания адаптера для socket.io и обработчика if(logic === true){}
в нескольких узлах.