使用socket.io作为api

sdf*_*asd 8 api rest websocket

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

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

socket.emit('set', ...)
socket.emit('get', ...)
socket.emit('delete', ...)
Run Code Online (Sandbox Code Playgroud)

igo*_*orw 10

这毫无意义.使用WebSockets的重点是绕过执行HTTP请求所带来的开销.您希望在流式HTTP上重新实现HTTP.

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

如果要构建RESTful应用程序,请使用HTTP.

如果要构建事件驱动的应用程序,请使用WebSockets.

使用正确的工具完成工作.


nym*_*nym 10

此链接可能描述了您要执行的操作:

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}).
Run Code Online (Sandbox Code Playgroud)

这并不能充分利用websockets的功能 - 双向通信,它确实允许流式传输请求,这可能会更快,具体取决于您轮询数据的频率.

祝你好运,保持冷淡!