确认通过套接字发送的数据已在服务器中收到

时间:2019-07-30 16:14:38

标签: android java-websocket android-websocket

我在android应用程序中定义了websocket,如下所示:

package com.oryx.geoop

import android.content.Context
import androidx.lifecycle.MutableLiveData
import org.java_websocket.client.WebSocketClient
import org.java_websocket.handshake.ServerHandshake
import java.lang.Exception
import java.net.URI

lateinit var mWebSocketClient: WebSocketClient


class SocketClient {
    val uri = URI("ws://10.0.2.2:8080/ws")


    val message = MutableLiveData<String>()

    fun connectWebSocket(context: Context) {
        // Setup stuff

        mWebSocketClient = object : WebSocketClient(uri) {
            override fun onError(ex: Exception?) {
                // TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
            }

            override fun onClose(code: Int, reason: String?, remote: Boolean) {
                // TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
            }

            override fun onOpen(serverHandshake: ServerHandshake) {
                // Opened do some stuff
            }

            override fun onMessage(s: String) {
                message.postValue(s)
            }
        }
        mWebSocketClient.connect()
    }
}

在检查套接字是否打开后,我将其用于将数据发送到服务器,如下所示:

if (mWebSocketClient.isOpen) {
      mWebSocketClient.send(jObj.toString())
} else {
      client.connectWebSocket(p0)
      mWebSocketClient.send(data)
}

但是仍然有疑问,因为两者之间的连接可能会断开,因此需要服务器将确认通知发送回android应用。

我如何使应用程序理解从服务器返回的味精,以确认接收到手机本身发送的数据。 假设从服务器发送回的味精是"confirmed, $data"

1 个答案:

答案 0 :(得分:0)

在您发送给服务器的每条消息上,服务器都可以轻松地发送回确认消息。方法名称取决于您使用的服务器堆栈。通常,它类似于 import { NO_ERRORS_SCHEMA } from '@angular/core' TestBed.configureTestingModule({ declarations: [Component], schemas:[ NO_ERRORS_SCHEMA] }) .compileComponents();

现在,让我们回答您在评论部分提出的问题。

  

我如何使android应用理解此msg是一个确认   一个,不是正常的吗?

您可以通过client.sendMessage(yourMessage)

进行通讯,而不用传递原始文本。

例如,

您可以使用以下格式发送正常回复

JSON

为了进行确认,服务器可以发送回这样的邮件

{
  "type": "NORMAL",
  "id": "someUniqueIdOfTheMessage",
  "message": "This is some normal message"
}