我正在尝试使用RedisToGo在Heroku上使用socket io。在当地环境中,一切都很好。
当我将代码部署到Heroku时,大部分时间我从浏览器获得以下数据的400 Bad Request:
{"code":1,"message":"Session ID unknown"}
我的redis配置是:
var url = "redis://redistogo:xxx@lab.redistogo.com:xxxx/";
var rtg = require("url").parse(url);
var pub = redis.createClient(rtg.port, rtg.hostname, {return_buffers: true});
var sub = redis.createClient(rtg.port, rtg.hostname, {return_buffers: true});
pub.auth(rtg.auth.split(":")[1]);
sub.auth(rtg.auth.split(":")[1]);
var redisOptions = {
pubClient: pub,
subClient: sub,
host: rtg.hostname,
port: rtg.port
};
io.adapter(ioredis(redisOptions));
有什么问题?
答案 0 :(得分:1)
问题是Heroku只接受websocket传输。在服务器和客户端中将传输设置为websocket解决了这个问题。
答案 1 :(得分:0)
在Heroku应用上启用会话亲和力应修复会话ID未知错误,您可以通过运行
来执行此操作heroku features:enable http-session-affinity