2015-05-13 7 views
5

Ho intenzione di creare una semplice applicazione WebSocket in attesa di connettersi ai client. I client sarebbero utenti Android e l'applicazione stessa è una semplice chat per due persone. Quindi per l'applicazione Android ho bisogno di conoscere l'indirizzo WebSocket (inizia con ws: // o wss: //). Ho già un sito Web, dove installo nodejs. Ma dopo un paio di giorni ho completamente bloccato quello che sta succedendo e come far funzionare qualcosa. Sarei anche contento di vedere nodejs che cattura i messaggi WebSocket e il gioco è fatto.Applicazione WebSocket semplice con NodeJS

Ho letto alcuni manuali su nodejs e socket.io, e di nuovo non ho idea di dove ottenere l'indirizzo ws: // e farlo funzionare in qualche modo.

Ad esempio, dal socket.io chat manual, abbiamo:

var app = require('express')(); 
var http = require('http').Server(app); 
var io = require('socket.io')(http); 

app.get('/', function(req, res){ 
    res.sendfile('index.html'); 
}); 

io.on('connection', function(socket){ 
    console.log('a user connected'); 
}); 

http.listen(3000, function(){ 
    console.log('listening on *:3000'); 
}); 

È che già semplice applicazione websocket? Dov'è il mio ws desiderato: // indirizzo in quel caso? Forse dovrei semplicemente caricare quel mucchio di codice sul mio server e inviare query a w: //mydomain.com: 3000?

risposta

4

Se si utilizza la libreria socket.io sul server, è necessario utilizzare una libreria compatibile socket.io anche perché è un protocollo in cima a webSocket in modo che entrambe le estremità debbano parlare la stessa lingua.

webSockets (e socket.io in questo caso) sono progettati per condividere il server web. Pertanto, qualsiasi richiesta di connessione webSocket al server viene inviata allo stesso host e porta del server web.

Ogni richiesta webSocket inizia con una richiesta http (quindi gestita dal server Web) e quella richiesta http come intestazione in esso che richiede un aggiornamento al protocollo webSocket. Quando il tuo server web vede quell'intestazione personalizzata, passa il controllo alla libreria socket.io che risponde che l'aggiornamento al protocollo webSocket è OK e il socket che ha iniziato la vita come una richiesta http, ora diventa il socket su cui l'app parla webSocket/socket.io.

La libreria socket.io si collega automaticamente al server Web per visualizzare le richieste di aggiornamento del protocollo.

Nella pagina Web, il codice del client socket.io per connettersi a questo sarebbe solo simile a questa:

<script src="/socket.io/socket.io.js"></script> 
<script> 

var socket = io(); 
socket.on('connect', function() { 
    // socket.io webSocket connection with your server is now established 
}); 

</script> 

La biblioteca socket.io si collegherà automaticamente allo stesso host che la pagina web è venuto da . Non hai nemmeno bisogno di inserire un URL.

+0

Grazie. Ma cosa succede se ho un'applicazione Android e non è posizionata sullo stesso server (da qualche parte in Placemarket credo). Immagino che socket.io non sia la scelta giusta per questo scopo, ma qual è il giusto? –

+0

Esiste una libreria che è possibile utilizzare per il client socket.io Android https://github.com/nkzawa/socket.io-client.java. Dai un'occhiata a questo post: http://socket.io/blog/native-socket-io-and-android/ – jmartins

+0

@JamesMay - Probabilmente puoi trovare una libreria client compatibile con socket.io per Android, se vuoi. Trovo socket.io rende webSockets un po 'più facile da usare in modo che possa essere un buon percorso. Come esattamente programmare su una libreria Android compatibile con socket.io dipenderebbe interamente dalla libreria che si usa e dal suo funzionamento. Il sito socket.io sembra avere problemi al momento, ma hanno una discussione di app Android native qui: http://socket.io/blog/native-socket-io-and-android/ – jfriend00