我在IBM Bluemix上部署了LoopbackJS应用程序,并在3个实例上进行了横向扩展。此应用程序还使用Socket.io来实现聊天系统。如何启用在CloudFoundry/Bluemix上运行的LoopbackJS应用程序上的粘性会话
我想激活粘性会话,以便来自同一客户端的每个请求都路由到相同的应用实例。
我知道根据12 factors应该避免粘性会话。但它似乎是唯一的解决方案,使socket.io能够与多个节点正常工作。
如陈述here,似乎我需要在回送应用程序中设置一个JSESSIONID会话cookie。
我然后做在LoopbackJS应用的server.js如下:
var session = require('express-session');
app.use(session({
secret: 's3Cur3',
name: 'JSESSIONID',
proxy: true,
resave: true,
saveUninitialized: true
}));
做出这样的转变后,当我发出的环回应用程序的请求,我可以看到,两个Cookie设置中响应头:
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