Comunicación de Android a node.js
Vi que hay un par de hilos similares, pero no pude encontrar mi respuesta.
Estoy haciendo y la aplicación de Android, quiero utilizar un nodo como servidor de comunicación en tiempo real.
- Spring pedalea cliente web sockets para android
- Java (Android) WebSocket Client Libraries
- XMPP, WebSocket y otras preguntas
- ¿Puedo conectarme con WebSocket en una aplicación de Android?
- Mensajería instantánea sobre xmpp o websocket
Realmente no puedo conseguir que esto funcione.
Probablemente estoy haciendo muchas muchas cosas mal, pero me gusta tratar de entender.
Mi servidor es tan simple como
var http = require('http'), io = require('socket.io'), server = http.createServer(function(req, res){ res.writeHead(200, {'Content-Type': 'text/html'}); res.end(':)'); }); server.listen(8080); var socket = io.listen(server); socket.on('connection', function(client){ client.send("hello"); console.log("connected!"); });
Y esto funciona … He intentado esto con una aplicación web y puedo conectar.
Pero no puedo con java ..
Intenté kryonet pero consigo una excepción como "conectado pero el tiempo de espera en el registro"
He intentado weberknecht Tengo un "error al crear socket a ws: //184.xxxxxx: 8080"
Intenté TooTallNate , ninguna suerte, él apenas llama método del onClose.
He intentado jWebSocket pero no pude conseguir que funcione …
Así que estoy aquí, pidiendo ayuda, ¿alguien sabe cómo hacer esto? ¿cualquier sugerencia?
PS para TooTallNate Estoy usando algo como esto:
Net net = new Net(new URI("ws://184.xxxxxx:8080"),WebSocketDraft.DRAFT76);
¿Podría estar aquí el problema?
ACTUALIZACIÓN: ¡Manejé esto! Después de un buen sueño tuve la idea, estaba usando socket.io, mala idea … ahora uso Node Websocket Server con weberknecht . El servidor se ve así:
var ws = require("websocket-server"); var server = ws.createServer(); server.addListener("connection", function(client){ console.log("new connection"); client.send("aaaaaa"); client.addListener("message", function(msg){ }); }); server.listen(8080);
Y el cliente:
try { URI url = new URI("ws://184.106.69.64:8080/"); WebSocket websocket = new WebSocketConnection(url); websocket.setEventHandler(new WebSocketEventHandler() { public void onOpen(){ System.out.println("--open"); } public void onMessage(WebSocketMessage message){ System.out.println("--received message: " + message.getText()); } public void onClose(){ System.out.println("--close"); } }); websocket.connect(); websocket.send("hello world"); } catch (WebSocketException wse) { wse.printStackTrace(); } catch (URISyntaxException use) { use.printStackTrace(); }
- Websocket Server Android
- Emitir mensajes socket.io en Android
- Websocket en Android 4.4 con Phonegap
- ¿Es la mejor práctica para las conexiones móviles persistentes en Android?
- Web Sockets en el navegador Samsung Galaxy S3 Android?
- Biblioteca de Android para WSS (Secure Web Socket)
- Enviar flujo de audio de Android (cliente) a C # (servidor) mediante Websocket
- WebSocket HTML5 en el teléfono para Android
Soy el autor de nodo-websocket-server (nws), y estoy bastante seguro de la razón de nodo-websocket-servidor de trabajo y socket.io no, se debe a la aplicación de cada uno. NWS negociará automáticamente el proyecto correcto para usar, y también tiene un esperanzado cumplimiento del 90-100% con los borradores de 76 y 75.
En cuanto a socket.io, no puedo comentar demasiado, pero la última vez que miré, es la implementación websocket estaba bastante mal implementado.
Actualmente estoy trabajando en un proyecto llamado nodo-websocket-protocolo, el cual será capaz de ser usado por socket.io, faye, etc para proporcionarles una implementación de websocket muy confiable y compatible. Esto también reemplazará la implementación actual en node-websocket-server en la versión 2.0.0.
Como una nota lateral, si prefiere no alojar su propio servidor websocket, podría mirar usando Pusher.com, que son en realidad mis empleadores.
[Actualización] En cuanto a si los websockets son la opción tecnológica más apropiada para su aplicación, es una cuestión de qué tipo de datos e interacción necesita su aplicación. En un dispositivo móvil, puede ser mejor utilizar algo como urbanairship o notificio si sólo está enviando notificaciones push.
Recuerdos, Micheil Smith
Al igual que Raynos dijo que la especificación websocket sigue siendo un borrador (cambios). Tal vez usted podría pedir Guillermo Rauch (Author socket.io) que el proyecto que está utilizando y encontrar la biblioteca adecuada Websocket. En su página github puede encontrar su dirección de correo electrónico y tratar de enviarle un correo electrónico (corto).
También podría intentar usar otro transporte (encuesta larga) e implementar las especificaciones usted mismo.
Pero en mi opinión, deberías usar el c2dm de Google (los grandes jugadores ya están usando esto y serán muy suavemente a la batería de tu teléfono) en lugar de empujar las actualizaciones al teléfono en tiempo real. Ya tengo un montón de aplicaciones instaladas que utilizan c2dm como por ejemplo whatsapp (impresionante). Usted podría estar usando el api de notifico para simplificar su trabajo. A continuación, simplemente instalar allí android programa para recibir las notificaciones deseadas. También hay un módulo de nodo (npm) disponible para su uso (fácil :))
yo recomiendo
- Android: https://github.com/stellaeof/java-websocket-client
- Nodo Websockets: http: //static.brandedcode.com/nws-docs/