2012-01-03 68 views
6

我很驚訝,我無法找到任何問題。你如何統一實現WebSocket的REST?我正在構建一個Web應用程序,並希望通過Ajax調用使用websockets。使用socket.io作爲API

首先,你如何表示一個URI?其次,你如何表示HTTP方法(GET,PUT,POST,...)?

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

回答

9

這是沒有意義的。使用WebSocket的重點在於繞開HTTP請求所帶來的開銷。您想要在流HTTP上重新實現HTTP。

在大多數情況下,它會導致更多的開銷,因爲如果客戶端不支持WebSockets或Flash套接字,它將回退到HTTP長輪詢。這意味着你有一個虛假的HTTP請求和實際的HTTP請求傳遞數據。

如果要構建RESTful應用程序,請使用HTTP。

如果要構建事件驅動的應用程序,請使用WebSockets。

使用正確的工具進行工作。

+1

我將使用網頁上的websockets反正實時的東西 – sdfadfaasd 2012-01-03 23:50:37

10

此鏈接可能說明你正在嘗試做的事:

How can Socket.io and RESTFul work together?

這是沒有錯的希望有信息,如GET,設置,刪除。重用您現有的API結構並不錯 - 您仍然需要路由,並且URI可以通過您在服務器端的路由進行分析,以與GET/SET/DELETE的控制器相對應。

如:

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

這並不利用的WebSockets什麼做的好 - 雙向通信,這確實可以對數據流的請求,這可能會更快取決於你多久輪詢你的數據。

祝你好運,並保持冷淡!