【发布时间】:2017-09-29 13:22:15
【问题描述】:
问题描述
当使用 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 服务器 URL 上的点客户端应用订阅
- 从订阅的客户端发送新消息
预期结果
期望主解析服务器将 LiveQuery 的更新发布到 Redis 以供 LiveQuery 服务器(订阅)读取,这反过来又会调用客户端中的句柄方法。
实际结果
消息已创建,但客户端中的句柄方法从未被调用。
请记住,当主解析服务器和 LiveQuery 服务器在本地运行并且 Redis 从 Heroku 运行时,此设置将起作用。
环境设置
-
服务器
- 解析服务器版本:2.5.3
- 操作系统:Heroku Dyno 和本地 MacOS High Sierra
- 硬件:Heroku Web 应用程序
- 请参阅上面有关本地和 Heroku 配置的说明
数据库 MLab
日志/跟踪
Redis 显示两个活动连接,Main Parse Server 显示消息对象的创建,重新加载客户端视图将显示创建的消息。
【问题讨论】:
标签: heroku redis parse-server