2016-04-07 148 views
0

我想用RedisToGo在Heroku上使用套接字io。在当地环境中,一切都很好。在Heroku上不能使用socket.io和redis

当我部署我的代码到Heroku的,大部分我得到400错误的请求从浏览器下面的数据的时间:

{"code":1,"message":"Session ID unknown"} 

我Redis的配置是:

var url = "redis://redistogo:[email protected]: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)); 

什么问题是什么?

回答

1

问题是Heroku只接受websocket传输。在服务器和客户端设置传输到websocket解决了这个问题。

0

对Heroku的应用程序启用会话亲缘关系应该可以解决会话ID未知错误,您可以通过运行

heroku features:enable http-session-affinity 
做到这一点