У меня есть приложение LoopbackJS, развернутое на IBM Bluemix и масштабируемое по горизонтали в трех экземплярах. Это приложение также использует Socket.io для реализации системы чата.Как включить липкие сессии в приложении LoopbackJS, работающем на CloudFoundry/Bluemix
Я бы хотел активировать липкие сеансы, чтобы каждый запрос, исходящий от одного и того же клиента, направлялся в один и тот же экземпляр приложения.
Я знаю, что следует избегать липких сеансов согласно 12 factors. Но это единственное решение для корректной работы socket.io с несколькими узлами.
Как указано here, похоже, мне нужно установить сеансовый файл JSESSIONID в приложении loopback.
Затем я сделал следующее в server.js из приложения LoopbackJS:
var session = require('express-session');
app.use(session({
secret: 's3Cur3',
name: 'JSESSIONID',
proxy: true,
resave: true,
saveUninitialized: true
}));
После того, что изменения, когда я выполняю запрос к приложению Loopback, я могу видеть, что два печенья установлены в заголовки ответа:
Set-Cookie:__VCAP_ID__=988ce9aa9b7f49cdb31d04f697d892b6024579565ea443589ed10e7a4c1c05f0; Path=/; HttpOnly, JSESSIONID=s%3Adb3KsqgZfkwEg39wrLKcsB3AWpazcOgd.TcA1vYbVB5DqemJXDS%2BLxUJ207WNC7UGmS5BpjZQ9Xc; Path=/; HttpOnly; Secure
Set-Cookie:JSESSIONID=s%3Adb3KsqgZfkwEg39wrLKcsB3AWpazcOgd.TcA1vYbVB5DqemJXDS%2BLxUJ207WNC7UGmS5BpjZQ9Xc; Path=/; HttpOnly
во всяком случае, когда я выполняю запрос снова из того же браузера, я могу увидеть в журналах на стороне Bluemix, что запрос обслуживается другим экземпляром приложения.
Я действительно неопытен в этих предметах, поэтому был бы очень признателен за любые советы, которые помогут правильно настроить липкие сеансы.
Оформление заказа https://github.com/rajaraodv/redispubsub – opiethehokie