【问题标题】:Cannot use socket.io with redis on Heroku无法在 Heroku 上将 socket.io 与 redis 一起使用
【发布时间】:2016-07-28 15:30:13
【问题描述】:

我正在尝试将 Heroku 上的套接字 io 与 RedisToGo 一起使用。在本地环境中,一切都很好。

当我将代码部署到 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));

有什么问题?

【问题讨论】:

    标签: heroku redis socket.io


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      在 Heroku 应用上启用会话关联应该可以修复 Session ID unknown 错误,您可以通过运行

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

      【讨论】:

        猜你喜欢
        • 2015-08-17
        • 1970-01-01
        • 2012-06-19
        • 2016-08-24
        • 2019-11-25
        • 2017-07-04
        • 2014-11-25
        • 1970-01-01
        • 2021-01-25
        相关资源
        最近更新 更多