I defined the websocket in my android app as below:
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()
}
}
And I use it to send data to the server as below, after checking the socket is opened or not:
if (mWebSocketClient.isOpen) {
mWebSocketClient.send(jObj.toString())
} else {
client.connectWebSocket(p0)
mWebSocketClient.send(data)
}
But still have doubt as connection may be cut somewhere in between, so need the server to send back a confirmation note to the android app.
How can I make the app understand the returned msg from the server as a confirmation of receiving the data the mobile itself sent.
Let's say the msg sent back from the server is "confirmed, $data"
On every message you send to the server, the server can send back a confirmation message easily. The method name depends on the server stack you use. Mostly, it's something like
client.sendMessage(yourMessage)
Now, let's answer your question which you asked in the comments section.
Rather than passing raw text, you can do the communication in
JSON
For example,
You can send normal response in below format
and for the confirmation,the server can send back something like this