我很惊讶我找不到任何问题。如何统一实现REST over WebSockets?我正在构建一个Web应用程序,并希望在ajax调用上使用websockets。
首先,您如何表示URI?其次,你如何表示HTTP方法(GET,PUT,POST,...)?
socket.emit('set', ...)
socket.emit('get', ...)
socket.emit('delete', ...)
答案 0 :(得分:10)
这没有任何意义。使用WebSockets的重点是绕过执行HTTP请求所带来的开销。您希望在流式HTTP上重新实现HTTP。
在大多数情况下,它实际上会导致更多开销,因为如果客户端不支持WebSockets或Flash套接字,它将回退到HTTP长轮询。这意味着您有一个虚假的HTTP请求以及传递数据的实际HTTP请求。
使用正确的工具完成工作。
答案 1 :(得分:10)
此链接可能描述了您要执行的操作:
How can Socket.io and RESTFul work together?
想要拥有GET,SET,DELETE等消息并没有错。重用现有的API结构并没有错 - 您仍然需要路由,并且URI可以由服务器端的路由解析,以对应GET / SET / DELETE的控制器。
e.g:
socket.emit('set', {uri: 'https://stackoverflow.com/questions/6339393/how-can-socket-io-and-restful-work-together', params: {someKey: "someValue}).
这并没有充分利用websockets的功能 - 双向通信,但它确实允许流式传输请求,这可能会更快,具体取决于您轮询数据的频率。
祝你好运,保持冷淡!