2012-01-03 17 views
6

Sono sorpreso di non riuscire a trovare alcuna domanda al riguardo. Come si implementa REST su WebSockets in modo uniforme? Sto costruendo una web app e vorrei usare websocket su chiamate Ajax.Utilizzo di socket.io aspi

In primo luogo, come si fa a rappresentare un URI? Secondo, come rappresenti i metodi HTTP (GET, PUT, POST, ...)?

socket.emit('set', ...) 
socket.emit('get', ...) 
socket.emit('delete', ...) 

risposta

9

Questo non ha senso. L'intero scopo dell'uso di WebSockets è bypassare il sovraccarico imposto eseguendo richieste HTTP. Si desidera implementare nuovamente HTTP su HTTP in streaming.

Nella maggior parte dei casi causerà effettivamente un sovraccarico, perché se il client non supporta WebSocket o socket Flash, tornerà al polling lungo HTTP. Il che significa che hai una richiesta HTTP falsa e la richiesta HTTP effettiva che consegna i dati.

Se si vuole costruire un'applicazione RESTful, utilizzare HTTP.

Se si vuole costruire un app event-driven, utilizzare WebSockets.

Utilizzare lo strumento giusto per il lavoro.

+1

Userò WebSockets sulla pagina in ogni modo per le cose in tempo reale – sdfadfaasd

10

Questo link probabilmente descrivono quello che stai cercando di fare:

How can Socket.io and RESTFul work together?

Non è sbagliato a voler avere messaggi come GET, SET, DELETE. Non è sbagliato riutilizzare la struttura API esistente: è ancora necessario il routing e l'URI può essere analizzato dal routing sul lato server per corrispondere a un controller per GET/SET/DELETE.

esempio:

socket.emit('set', {uri: 'https://stackoverflow.com/questions/6339393/how-can-socket-io-and-restful-work-together', params: {someKey: "someValue}). 

Questo non capitalizzare ciò che WebSockets fa bene - la comunicazione bidirezionale, ma esso consente per le richieste di streaming, che probabilmente sarà più veloce a seconda di come spesso si sondaggio i tuoi dati.

Buona fortuna, e rimanere gelido!