使用Redis解析LiveQuery独立服务器

时间:2017-09-29 13:22:15

标签: heroku redis parse-server

问题描述

当使用Redis运行单独的Parse Server和Parse LiveQuery Server以实现可伸缩性时,Parse Server不会发布到Redis,以便将新的更新下推到LiveQuery Server。

当前设置如下:

- MAIN PARSE SERVER -

```

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
  }

```

- PARSE LIVEQUERY SERVER -

```

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服务器(订阅)读取的LiveQuery更新发布到Redis,然后调用客户端中的句柄方法。

实际结果

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

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

环境设置

  • 服务器

    • parse-server version:2.5.3
    • 操作系统:Heroku Dyno和本地MacOS High Sierra
    • 硬件:Heroku Web App
    • 请参阅以上有关本地和Heroku配置的说明
  • 数据库 MLAB

日志/跟踪

Redis显示两个活动连接,Main Parse Server显示消息对象的创建,重新加载客户端视图将显示已创建的消息。

1 个答案:

答案 0 :(得分:0)

您在发布方面输入了错误的参数“redisURL”。它是“redisURL”,而不是“redisUrl”。