2012-01-03 29 views
6

Estoy sorprendido de que no puedo encontrar ninguna pregunta sobre esto. ¿Cómo implementa REST sobre WebSockets uniformemente? Estoy construyendo una aplicación web y me gustaría usar websockets sobre llamadas ajax.Usando socket.io como api

En primer lugar, ¿cómo se representa un URI? En segundo lugar, ¿cómo se representan los métodos HTTP (GET, PUT, POST, ...)?

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

Respuesta

9

Esto no tiene sentido. El objetivo de usar WebSockets es eludir la sobrecarga impuesta al hacer solicitudes HTTP. Desea volver a implementar HTTP sobre la transmisión de HTTP.

En la mayoría de los casos, en realidad causar más sobrecarga, ya que si el cliente no admite WebSockets o enchufes de Flash, se caerá de nuevo a HTTP largo de votación. Lo que significa que tiene una solicitud HTTP falsa y la solicitud HTTP real que entrega los datos.

Si usted quiere construir una aplicación REST, utilizar HTTP.

Si usted quiere construir una aplicación orientada a eventos, utiliza WebSockets.

Utilice la herramienta adecuada para el trabajo.

+1

Voy a utilizar websockets en la página de todos modos para cosas en tiempo real – sdfadfaasd

10

Este enlace describe probablemente lo que usted está tratando de hacer:

How can Socket.io and RESTFul work together?

No es malo el deseo de tener mensajes como GET, SET, DELETE. No está mal reutilizar su estructura de API existente; todavía necesita enrutar y el URI puede analizarse mediante su enrutamiento en el lado del servidor para corresponderse con un controlador para GET/SET/DELETE.

por ejemplo:

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

Esto no sacar provecho de lo websockets hace bien - la comunicación bidireccional, pero sí permite solicitudes de transmisión, lo que probablemente será más rápido dependiendo de la frecuencia con que sondeo tu información.

Buena suerte, y permanecer helada!