2012-01-03 13 views
6

私はこれに関する質問を見つけることができないことに驚いています。一貫してREST over WebSocketを実装するにはどうすればよいですか?私はWebアプリケーションを構築しており、ajax呼び出しでWebソケットを使用したいと考えています。apiとしてsocket.ioを使用

まず、URIをどのように表現しますか?次に、どのようにHTTPメソッド(GET、PUT、POST、...)を表現しますか?

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

答えて

9

これは意味をなさない。 WebSocketsを使用することの全ポイントは、HTTP要求を行うことによって課されるオーバーヘッドをバイパスしています。ストリーミングHTTPの上にHTTPを再実装する必要があります。

ほとんどの場合、クライアントがWebSocketまたはFlashソケットをサポートしていない場合、HTTPの長いポーリングにフォールバックするため、実際にはオーバーヘッドが増加します。つまり、偽のHTTPリクエストと、実際のHTTPリクエストでデータを配信しているということです。

RESTfulアプリを構築する場合は、HTTPを使用します。

イベントドリブンアプリを構築する場合は、WebSocketを使用します。

ジョブには適切なツールを使用してください。

+1

私は、リアルタイムのもののためにページ上にウェブソケットを使用します – sdfadfaasd

10

このリンクはおそらく、あなたがやろうとしているかについて説明します。

How can Socket.io and RESTFul work together?

それは、このようなGET、SETは、DELETEなどのメッセージを持つようにしたいのは間違いありません。既存のAPI構造を再利用するのは間違いではありません。ルーティングが必要であり、GET/SET/DELETE用のコントローラに対応するように、サーバー側のルーティングによってURIを解析することができます。

例:

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

これは、WebSocketをよく何に投資しない - おそらく、どのくらいの頻度で投票に応じて速くされる、それはストリーミング要求を許可しない、双方向通信が、あなたのデータ。

幸運と霜降り!

関連する問題