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.

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(); } 

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

  • Grails 2.4 Spring Websocket SockJs Java Android Cliente
  • Cómo cerrar / volver a intentar / administrar un WebSocket con Koush AndroidAsync?
  • Implementación Push / Comet de servidor alternativo para el navegador de Android sin enviar mensajes de 4KB?
  • Android con comunicación websocket (servidor Node Websocket y Android Java Client). No funciona en Android 4
  • Soporte de WebSocket en dispositivos móviles
  • ¿Alguien ha escrito una librería de Android para Pusher?
  • Angularjs Phonegap Android usando Websockets
  • WebSockets para Android en la aplicación Phonegap con Node.js / Socket.IO server & client
  • Los websockets de AndroidAsync no funcionan
  • La mejor manera de evitar los efectos del algoritmo Nagle usando webSockets?
  • WebSocket en Android WebView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.