【问题标题】:LiveQuery does not work, if there is no ParseConnectivityProvider provided如果没有提供 ParseConnectivityProvider,LiveQuery 不起作用
【发布时间】:2021-09-03 05:45:45
【问题描述】:

为此绞尽脑汁。

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

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

我尝试使用 liveQueryURL 并没有运气。颤振文档没有关于如何从服务器实现此 url 的具体示例。我从 javaScript 视频和文档中假设这是我创建的自定义子域,例如 customdomain.b4a.io,它使最终 url 为“wss://customdomain.b4a.io”。

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

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

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

这是否可能因为这是一个飞镖程序而不是颤振而不起作用?没想到会是这样……

代码:

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'));
  });
}

【问题讨论】:

    标签: parse-platform parse-live-query


    【解决方案1】:

    来自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();
    
    }
    

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

    【讨论】:

    • 这实际上是纯 dart 程序的正确解决方案,您可以保留 HTTPS 和 WSS。再次感谢您!
    【解决方案2】:

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

    【讨论】:

    • 今晚我会调查这个,感谢您的意见!这很容易让人发疯,因为它看起来很简单,但却是一个必要的功能,而且它不起作用。我确实担心丢失 https 和 wss。我不知道的幕后还有更多安全吗?我也在 back4app 与支持人员合作。希望我能完成这项工作或找到更好的方法。
    • 你确定吗?我很确定它可以在加密频道上运行。您是否使用了自签名证书?
    猜你喜欢
    • 1970-01-01
    • 2017-01-14
    • 2016-05-22
    • 2012-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多