# Android-WebSocketClient
**Repository Path**: scrystally/Android-WebSocketClient
## Basic Information
- **Project Name**: Android-WebSocketClient
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-04-15
- **Last Updated**: 2025-04-15
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Android WebSocket Client With Kotlin. [](https://github.com/kimoandroid/StandWithPalestine)
Web Socket Clinet Side For Android With Kotlin you can use this app with Ktor Server Side, Find Ktor Project Here: [Ktor WebSocket Server Side](https://github.com/kimoandroid/Ktor-WebSocketServer)
[](https://github.com/kimoandroid/StandWithPalestine/blob/main/Donate.md)
# App Preview
# Usage
add this line into your `build.gradle` app.
```gradle
dependencies {
implementation 'org.java-websocket:Java-WebSocket:1.4.0'
}
```
## Add This Code In `MainActivity`
```kotlin
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.*
import androidx.appcompat.app.AppCompatActivity
import com.encept.websocket_client.databinding.ActivityMainBinding
import java.net.URI
import java.util.*
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
private lateinit var webSocketClient: ChatWebSocketClient
private var AL: ArrayList> = ArrayList()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
val btnSend = binding.btnSend
val editMsg = binding.editMsg
val listview1 = binding.listview1
// load server url from strings.xml
val serverUri = URI(getString(R.string.server_url))
webSocketClient = ChatWebSocketClient(serverUri) { message ->
// display incoming message in ListView
runOnUiThread {
run {
val _item = HashMap()
_item["message"] = message
AL.add(_item)
}
listview1.adapter = Listview1Adapter(AL)
}
}
// connect to websocket server
webSocketClient.connect()
btnSend.setOnClickListener {
try {
// send message to websocket server
webSocketClient.sendMessage(editMsg.text.toString())
editMsg.setText("")
} catch (e: Exception) {
e.printStackTrace()
Toast.makeText(this, e.toString(), Toast.LENGTH_SHORT).show()
}
}
}
override fun onDestroy() {
super.onDestroy()
// close websocket connection
webSocketClient.close()
}
class Listview1Adapter(private val _data: ArrayList>) : BaseAdapter() {
override fun getCount(): Int {
return _data.size
}
override fun getItem(_index: Int): HashMap {
return _data[_index]
}
override fun getItemId(_index: Int): Long {
return _index.toLong()
}
override fun getView(_position: Int, _v: View?, _container: ViewGroup?): View? {
val _inflater = LayoutInflater.from(_container?.context)
var _view = _v
if (_view == null) {
_view = _inflater.inflate(R.layout.cul, _container, false)
}
val text2 = _view?.findViewById(R.id.text2)
if (text2 != null) {
text2.text = _data[_position]["message"].toString()
}
return _view
}
}
}
```
## then, add this code at `activity_main.xml`
```xml
```
## now we need to create listview custom view, create new xml called `custom.xml` and add this code
```xml
```
## after that, Create Kotlin Class Called `ChatWebSocketClient`
```kotlin
import org.java_websocket.client.WebSocketClient
import org.java_websocket.handshake.ServerHandshake
import java.net.URI
// initialize websocket client
class ChatWebSocketClient(serverUri: URI, private val messageListener: (String) -> Unit) : WebSocketClient(serverUri) {
override fun onOpen(handshakedata: ServerHandshake?) {
// When WebSocket connection opened
}
override fun onClose(code: Int, reason: String?, remote: Boolean) {
// When WebSocket connection closed
}
override fun onMessage(message: String?) {
// When Receive a message
messageListener.invoke(message ?: "")
}
override fun onError(ex: Exception?) {
// When An error occurred
}
fun sendMessage(message: String) {
send(message)
}
}
```
# Features
- Realtime Message with 40ms ping.
- 100% Kotlin Code On Client Side & Server Side.
- Source Code Is Compatible with any IDE
- Clean & Simple Code
## License
- All Copyright Saved By Jetbrains.
- [Apache License](https://www.apache.org/licenses/LICENSE-2.0)