如果没有提供 ParseConnectivityProvider,LiveQuery 不起作用

LiveQuery does not work, if there is no ParseConnectivityProvider provided

为此绞尽脑汁

我无法解决这个问题,我的代码产生了这个错误:

LiveQuery does not work, if there is no ParseConnectivityProvider provided.

我尝试使用 liveQueryURL,但没有成功。 flutter 文档没有关于如何从服务器实现此 url 的具体示例。我从 javaScript 视频和文档中假设这是我创建的自定义子域,例如 customdomain.b4a.io,这使得最终的 url 'wss://customdomain.b4a.io'.

我查看了 Parse().initialize 的“connectivityProvider:”arg,但没有发现具体的实现方法。

这只是一个 dart 演示项目。非常感谢任何帮助或想法!

编辑:This post 根本没有解决我的问题。也很老了

有没有可能因为这是一个 dart 程序而不是 flutter 而无法正常工作?没想到是这样...

代码:

import 'package:parse_server_sdk/parse_server_sdk.dart';

Future<void> main(List<String> arguments) async {
  final keyApplicationId = 'XXX';
  final keyClientKey = 'XXX';
  final keyParseServerUrl = 'https://parseapi.back4app.com';
  final liveQueryURL = 'wss://XXX.b4a.io';

  await Parse().initialize(
    keyApplicationId,
    keyParseServerUrl,
    clientKey: keyClientKey,
    liveQueryUrl: liveQueryURL,
    autoSendSessionId: true,
    debug: true,
  );

  final LiveQuery liveQuery = LiveQuery();
  QueryBuilder<ParseObject> query = QueryBuilder<ParseObject>(ParseObject('Color'));
  Subscription subscription = await liveQuery.client.subscribe(query);

  subscription.on(LiveQueryEvent.create, (value) {
    print('Object: ' + value['color']);
    print((value as ParseObject).get('color'));
  });
}

不幸的是,在 flutter 中解析实时查询不适用于 https 服务器 url。我以前遇到过这个问题,这让我发疯了!我所做的是在解析服务器的后端,同时提供 http 和 https 服务器。而在 flutter 的客户端,只需连接到 http 服务器进行实时查询! 这很好

来自https://github.com/parse-community/Parse-SDK-Flutter/issues/543#issuecomment-912783019

请提供自定义 ParseConnectivityProviderconnectivityProvider in Parse().initialize)。 如果您可以假设您的设备始终可以访问互联网,那么实施应该像这样简单:

class CustomParseConnectivityProvider extends ParseConnectivityProvider{

Future<ParseConnectivityResult> checkConnectivity() => ParseConnectivityResult.wifi;

Stream<ParseConnectivityResult> get connectivityStream => Stream<ParseConnectivityResult>.empty();

}

(未在智能手机上测试和输入。)