如何使用Firebase在IOS上实现Server-Sent Events?

问题描述 投票:3回答:1

我试图使用rest api监听firebase事件。问题是没有调用回调方法。我正在使用EventSource用于此目的。这是听这些事件的正确方法吗?

Auth.auth().currentUser?.getIDTokenForcingRefresh(true, completion: { (token, error) in
    let server : String =  "https://project-XXXXX.firebaseio.com/.json?auth=\(token!)"

    let eventSource: EventSource = EventSource(url: server)
    eventSource.onOpen {
        // When opened
        debugPrint("eventSource open")
    }

    eventSource.onError { (error) in
        // When errors
        debugPrint("error = \(error?.localizedDescription)")
    }
    eventSource.onMessage { (id, event, data) in
        debugPrint("data = \(data)")
        // Here you get an event without event name!
    }

    eventSource.addEventListener("child_added") { (id, event, data) in
        debugPrint("data = \(data)")
        // Here you get an event 'event-name'
    }
})
ios firebase firebase-realtime-database server-sent-events eventsource
1个回答
0
投票

我终于找到了答案。我必须添加'put'事件监听器而不是'child_added'事件监听器。根据documentation,我们只能使用以下事件监听器:

  • 补丁
  • 活着
  • 取消
  • auth_revoked

(参考:https://github.com/inaka/EventSource/issues/86#issuecomment-354029202

© www.soinside.com 2019 - 2024. All rights reserved.