Reputation: 7928
I'm trying to connect with websocket
and the test socket is working wss://echo.websocket.org
with my code but my WebSocket is not working and getting failed but whenever I try with the browser it works.
My Android code
// val request: Request = Request.Builder().url("wss://echo.websocket.org").build()
val request: Request = Request.Builder().url("wss://dev.xyz.co.uk/xyz").build()
val listener: EchoWebSocketListener = EchoWebSocketListener()
val ws: WebSocket = client.newWebSocket(request, listener)
client.dispatcher().executorService()
private inner class EchoWebSocketListener : WebSocketListener() {
private var NORMAL_CLOSURE_STATUS: Int = 1000
override fun onOpen(webSocket: WebSocket, response: Response) {
Log.d("onOpen-----", "Socket connected!!!!!")
webSocket.send("[5, \"driver106apikey\"]");
webSocket.close(NORMAL_CLOSURE_STATUS,"GoodBye!!")
}
override fun onMessage(webSocket: WebSocket, text: String) {
Log.d("onMessage-----", "Socket connected!!!!!")
Log.d("onMessage String-----", text)
output("Receiving------ "+ text)
}
override fun onMessage(webSocket: WebSocket, bytes: ByteString) {
Log.d("onMessage-----", "Socket onmessage!!!!!")
output("Receiving------ "+ bytes.toString())
}
override fun onClosing(webSocket: WebSocket, code: Int, reason: String) {
Log.d("onClosing-----", "Socket closing!!!!!")
webSocket.close(NORMAL_CLOSURE_STATUS, null)
output("Closing : "+ code + "/" + reason)
}
override fun onFailure(webSocket: WebSocket, t: Throwable, response: Response?) {
Log.d("onFailure-----", "FAILURE")
Log.d("onFailure-----", t.message)
}
}
This is how data is sending in web
1. When you send data you send in this format :
function clickBtn() {
var data = {
event: 0,
data: {
lat: 123.2123,
lng: 22.5543,
status: 1
}
}
conn.publish('driver106apikey', data);
};
but trying to send with key-value in android is getting failed.
val formBody: RequestBody = FormBody.Builder()
.add("driver106apikey", "{
"event": 0,
"data": {
"lat": 123.2123,
"lng": 22.5543,
"status": 1
}
}")
.build()
Erorr showing in android
FAILURE Expected HTTP 101 response but was '426 No Sec-WebSocket-Protocols requested supported'
this is how data is sending through the browser.
Upvotes: 4
Views: 2083
Reputation: 386
It seems OkHttp does not support WAMP protocol. I'd suggest switching to Autobahn|Java or similar library.
Upvotes: 4