class MainActivity : AppCompatActivity() { // "inner" és important per accedir als mètodes de MainActivity inner class MyWebSocketClient(serverUri: URI) : WebSocketClient(serverUri) { override fun onOpen(handshakedata: ServerHandshake?) { println("✅ Connectat al servidor") println("🔗 Codi d'estat: ${handshakedata?.httpStatus}") println("📝 Descripció: ${handshakedata?.httpStatusMessage}") } override fun onMessage(message: String?) { println("📥 Rebut: $message") // crides segures a la GUI (main thread) runOnUiThread { val tv = findViewById(R.id.textView) tv.text = "Nou missatge: $message" } } override fun onClose(code: Int, reason: String?, remote: Boolean) { println("🔌 Connexió tancada") println("📋 Codi: $code, Raó: $reason, Remote: $remote") } override fun onError(ex: Exception?) { println("❌ Error: ${ex?.message}") ex?.printStackTrace() } } fun connectaWS() { val uri = URI("ws://server.domini.tld") // utilitzeu wss:// si va sobre HTTPS var wsclient = MyWebSocketClient(uri) wsclient.connect() } }