Contenidos
Servidor en Kotlin
Importar librerías
1 2 3 4 |
io.ktor:ktor-server-netty:1.6.7 io.ktor:ktor-gson:1.6.7 org.slf4j:slf4j-simple:2.0.0-alpha1 org.slf4j:slf4j-simple:1.7.32 |
Código del servidor que escucha las peticiones y las reproduce con la voz del sistema
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
import io.ktor.application.* import io.ktor.http.ContentType import io.ktor.http.HttpStatusCode import io.ktor.request.receiveText import io.ktor.response.respond import io.ktor.routing.post import io.ktor.routing.routing import io.ktor.server.engine.embeddedServer import io.ktor.server.netty.Netty fun main() { val server = embeddedServer(Netty, port = 6001) { routing { post("/send-message") { val receivedMessage = call.receiveText() val remoteAddress = call.request.local.remoteHost println(remoteAddress+'\n') println("Mensaje recibido: $receivedMessage") call.respond(HttpStatusCode.OK, "adios2") } } } server.start(wait = true) } |

Cliente en Swift para el Apple Watch que envía y recibe mensajes
Código del cliente en Swift para el Apple Watch
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
import SwiftUI struct ContentView: View { @State private var serverResponse = "" var body: some View { VStack { Text("Respuesta: \(serverResponse)") .padding() .multilineTextAlignment(.center) Button(action: { sendMessage() }) { Text("Enviar Mensaje") .padding() .foregroundColor(.white) .background(Color.blue) .cornerRadius(8) } } } func sendMessage() { let serverAddress = "192.168.1.55" let serverPort = 6001 let messageToSend = "hola" if let url = URL(string: "http://\(serverAddress):\(serverPort)/send-message") { var request = URLRequest(url: url) request.httpMethod = "POST" request.setValue("application/text", forHTTPHeaderField: "Content-Type") let data = messageToSend.data(using: .utf8) request.httpBody = data let task = URLSession.shared.dataTask(with: request) { data, response, error in if let error = error { print("Error: \(error.localizedDescription)") } else if let httpResponse = response as? HTTPURLResponse, (200...299).contains(httpResponse.statusCode), let responseData = data, let responseString = String(data: responseData, encoding: .utf8) { print("Mensaje enviado con éxito") print("Respuesta del servidor: \(responseString)") DispatchQueue.main.async { serverResponse = responseString } } else { print("Error al enviar el mensaje") } } task.resume() } else { print("URL no válida") } } } @main struct WatchApp: App { var body: some Scene { WindowGroup { ContentView() } } } |


Configuración del Apple Watch

