2016-04-07 108 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 
做到這一點