heroku - 使用 Redis 解析 LiveQuery 独立服务器

标签 heroku redis parse-server

问题描述

当使用 Redis 运行单独的 Parse Server 和 Parse LiveQuery Servers 以实现可扩展性时,Parse Server 不会发布到 Redis 以将新更新推送到 LiveQuery Servers。

当前设置如下:

--主要的解析服务器--

```

var api = new ParseServer({
  databaseURI: process.env.DATABASE_URI,
  cloud: process.env.CLOUD_CODE_MAIN,
  appId: process.env.APP_ID,
  masterKey: process.env.MASTER_KEY, 
  fileKey: process.env.FILE_KEY, 
  serverURL: process.env.SERVER_URL,  
  liveQuery: {
    classNames: ["Random","ClassNames"], 
      redisUrl: process.env.REDIS_URL
  }

```

--解析实时查询服务器--

```

var api = new ParseServer({
    appId: process.env.APP_ID,
    masterKey: process.env.MASTER_KEY,
    serverURL: process.env.SERVER_URL
});

var app = express();

var mountPath = process.env.PARSE_MOUNT || '/leap';
app.use(mountPath, api);

var port = process.env.PORT;
var httpServer = require('http').createServer(app);

httpServer.listen(port, function() {
        console.log('parse-live-query-server running on port ' + port + '.');
});

// This will enable the Live Query real-time server
ParseServer.createLiveQueryServer(httpServer, {
  redisURL: process.env.HEROKU_REDIS_URL
});

```

重现步骤

  • 在 Heroku 上创建一个主要的解析服务器应用程序,添加一个 Heroku Redis 作为附加组件
  • 在 Heroku 上创建一个单独的解析 LiveQuery 服务器应用程序并链接到 Redis
  • 相应地设置 Heroku 中的所有环境变量(使用 REDIS_URL 链接到连接到 Redis 实例时给出的更新的 Redis 附加 URL)
  • 升级到付费 dynos 和 Redis
  • 将客户端应用程序订阅指向 LiveQuery Server URL
  • 从订阅的客户那里发送一条新消息

预期结果

期望主解析服务器将 LiveQuery 的更新发布到 Redis 以供 LiveQuery 服务器(订阅)读取,后者又会调用客户端中的 handle 方法。

实际结果

消息已创建,但客户端中的句柄方法从未被调用。

请记住,当主解析服务器和 LiveQuery 服务器在本地运行且 Redis 从 Heroku 运行时,此设置将起作用。

环境设置

  • 服务器

    • 解析服务器版本:2.5.3
    • 操作系统:Heroku Dyno 和本地 MacOS High Sierra
    • 硬件:Heroku 网络应用
    • 参见上面关于本地和 Heroku 配置的描述
  • 数据库 实验室

日志/跟踪

Redis 显示两个事件连接,Main Parse Server 显示消息对象的创建,重新加载客户端 View 将显示创建的消息。

最佳答案

您在发布端输错了参数“redisURL”。它是“redisURL”,而不是“redisUrl”。

关于heroku - 使用 Redis 解析 LiveQuery 独立服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46489751/

相关文章:

php - 如何连接到heroku mysql数据库

git - 如何将 git clone 变成一个 fork,然后从 fork 推送到 heroku?

redis - 如何在 Redis 中存储对象数组?

redis - 如何在centos服务器上永久设置redis session 超时

java - 如何使用 ParseQuery 对同一数据库列进行 OR 查询?

ios - 配置 SSL 以使用 IIS 和解析服务器

ruby-on-rails - 如何在 Heroku 上配置暂存环境?

linux - lua redis 处理错误

unit-testing - 在自托管 Parse Server 中测试 CloudCode

heroku - 如何在 Heroku Cedar 上的 Play Framework 1 应用上启用 GZIP 压缩?