Прослушиватель Firebase Realtime Child генерирует исключение SocketTimeoutException при загрузке в хранилище Firebase - PullRequest
0 голосов
/ 30 августа 2018

В моем приложении есть своего рода раздел комментариев, где я подключил дочерний слушатель событий, чтобы получать обновления комментариев в режиме реального времени.

private fun addListener() {
    reference.addChildEventListener(this)
}


override fun onChildAdded(dataSnapshot: DataSnapshot, previousChildName: String?) {
    val newPost = dataSnapshot.getValue(Comment::class.java)
    adapter.addToTop(newPost)
    key.add(dataSnapshot.key!!)
    errorDiscussion.visibility = View.GONE
}

При добавлении нового комментария tt прекрасно работает, когда я не загружаю изображение в FirebaseStorage и не публикую комментарий с нулевым значением в поле attachImage.

Но когда я пытаюсь загрузить изображение в FirebaseStorage и добавить, чем пытаться добавить новый комментарий с полем attachImage в этом конкретном databaseReference, данные фактически отправляются в базу данных, но метод onChildAdded не вызывается , И слушатель не привязан.

Что я вижу в журналах: SocketTimeoutException

08-30 09:18:43.175 12208-25905/np.com.aawaz.csitentrance D/NativeCrypto: jniThrowException: java/net/SocketTimeoutException: Read timed out
08-30 09:18:43.693 12208-25905/np.com.aawaz.csitentrance D/UploadTask: Increasing chunk size to 524288
08-30 09:18:43.719 12208-25905/np.com.aawaz.csitentrance D/NativeCrypto: jniThrowException: java/net/SocketTimeoutException: Read timed out

Я что-то здесь не так делаю? Разве это не хороший способ выполнить эту задачу.

Логика загрузки изображений

    val ref = FirebaseStorage.getInstance().getReference("discussion").child(fileName)

    val file = Uri.fromFile(File(image?.path))
    val uploadTask = ref.putFile(file)

    val progressDialog = MaterialDialog.Builder(this)
            .content("Uploading....")
            .progress(false, 100)
            .autoDismiss(false)
            .build()

    progressDialog.show()

    uploadTask.addOnProgressListener {
        val data = it.bytesTransferred / it.totalByteCount * 100;
        val progress = data.toInt()
        progressDialog.setProgress(progress)
    }

    uploadTask.addOnSuccessListener {
        addCommentWithImage(addCommentTextDiscussion.text.toString(), fileName)
        progressDialog.dismiss()
        image = null
        itemSelected.visibility = View.GONE
    }


    uploadTask.addOnFailureListener {
        progressDialog.dismiss()
        it.printStackTrace()
        Toast.makeText(this, "Unable to upload image, please try again later.", Toast.LENGTH_SHORT).show()
    }

База данных Push Logic

    val comment = Comment(currentUser!!.uid, currentUser.displayName, System.currentTimeMillis(), message, currentUser.photoUrl!!.toString(), imagePath)
    val postValues = comment.toMap()

    reference.push().setValue(postValues)
...