使用套接字.IO作为api



我很惊讶在这方面找不到任何问题。如何在WebSockets上统一实现REST ?我正在构建一个web应用程序,并希望使用ajax调用websockets。

首先,如何表示URI?其次,如何表示HTTP方法(GET、PUT、POST等)?

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

这毫无意义。使用WebSockets的全部意义在于绕过HTTP请求所带来的开销。你想在流HTTP之上重新实现HTTP。

在大多数情况下,它实际上会导致更多的开销,因为如果客户端不支持WebSockets或Flash socket,它将回落到HTTP长轮询。这意味着你有一个虚假的HTTP请求和实际的HTTP请求来传递数据。

如果你想构建一个RESTful应用,使用HTTP。

如果你想构建一个事件驱动的应用,使用WebSockets。

使用合适的工具。

这个链接可能描述了您要做的事情:

如何使用Socket。io和RESTFul一起工作?

想要GET、SET、DELETE这样的消息并没有错。重用现有的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所做的双向通信,但是它确实允许流请求,这可能会更快,这取决于你轮询数据的频率。

相关内容

  • 没有找到相关文章

最新更新