【问题标题】:Is it possible to notify a user of a new message in my Flutter chat app without Firestore or FCM?是否可以在没有 Firestore 或 FCM 的情况下在我的 Flutter 聊天应用程序中通知用户新消息?
【发布时间】:2019-12-18 02:06:21
【问题描述】:

我目前有一个具有聊天功能的 Flutter 应用程序。我通过编写标准的 CRUD 操作来实现它。当用户发送消息时,它会将其发布到数据库中。当用户导航到两个用户之间的聊天时,它会进行异步 REST 调用并获取聊天中的所有消息。当您输入一条消息并点击发送时,它会向后端发送一条消息并将其持久化到 SQL DB。

我目前无法“通知”用户收到消息。为了查看来自其他用户的任何新消息,我实际上必须离开聊天窗口并返回它。在高层次上,这是有道理的 - 客户端必须从服务器请求信息,因此如果设备上没有发生任何类型的事件,它就不会知道要监听新消息。

我认为实现这一点的唯一方法是使用某种形式的推送通知,但有没有办法在没有 Firestore 的情况下实现这一点? 我需要为我的后端应用程序创建发布和订阅服务吗? 这只能通过以某种方式使用推送通知来实现吗?

如果不是,我将如何学习如何去做?

对于这个问题的广泛性,我深表歉意,但我不知道“实时”聊天是如何工作的,我想更深入地了解如何在不使用预构建工具的情况下实现它.

【问题讨论】:

    标签: c# firebase flutter google-cloud-firestore


    【解决方案1】:

    我看到你用 C# 和 Flutter 标记了这个。假设您的后端是 C#,您需要为此使用像 SignalR 这样的 WebSocket 解决方案。

    有一个 pub 包 here 可以在 Flutter 应用中使用。

    我在后端使用 SignalR 和上面的应用内 pub 包进行了类似的设置,它的工作非常可靠。

    【讨论】:

    • 非常感谢 - 我认为这里真正的节省之处在于它教会了我 HTTP 请求(半双工、请求响应、不支持本机支持的服务推送,因为它需要客户端轮询或流式传输)之间的区别下载技术)与 WebSocket(全双工、双向、有服务推送)相比。起初我完全不明白其中的区别。但是,是的,我有 C# 作为我的后端,所以这将非常有效 - 非常感谢!
    • @kalittles 当然 - SignalR 非常强大,非常适合聊天应用程序。可能很难找到 Flutter 的端到端示例,但在 GitHub 上有许多聊天示例,您至少可以在其中看到服务器是如何完成的。不过,Flutter 客户端与您将在示例中看到的类似。这可能会帮助您入门:github.com/aspnet/SignalR-samples/tree/master/ChatSample
    猜你喜欢
    • 1970-01-01
    • 2021-05-22
    • 2020-12-19
    • 2015-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-18
    相关资源
    最近更新 更多