websocket使用 - rest websocket区别



ReST over websockets可能吗? (6)

我计划开发一个基于Web的聊天应用程序,它接收ReSTful请求,将它们转换为XMPP并将它们传送到XMPP服务器。

对于这种基于聊天的应用程序使用websockets看起来很有希望,因为事件(或响应)可以异步传递。 但是,如果我使用websockets作为从浏览器传输请求的底层协议,这仍然可以被视为ReSTful设计吗? 如果是,那么在websocket消息中如何表示URI,动词(GET,POST ...),参数? 将它们包装在xml / json中并发送它?

此外,ReSTful架构声明服务器上不会存储任何会话状态。 但是在这种情况下,当创建XMPP客户端会话时,此会话的状态将存储在服务器上(违反无状态约束)


REST是一种不强加协议的架构风格。 所以,是的,如果你愿意的话,你可以使用Web套接字,使用HTTP的REST和使用FTP的REST进行REST。

使用HTTP的主要原因是通过HTTP与任何组件或编程语言进行通信既简单又相当简单,并且因为HTTP支持具有多个中介的分布式环境:代理,防火墙......; 因此,您可以在任何拓扑上部署您的服务,任何人都可以访问它。

我的咆哮:如果你是一个RESTliban并且Roy Fielding的论文是真理的来源,那么动词永远不会被认为是语义的一部分。 URI是语义。 对不同动作使用不同的动词是REST over HTTP的优雅演变,但不是“真相”的一部分。 您可以他的论文的第六章中查看Roy评估的HTTP休息场景。 没有提到动词。 请注意,这是一个评估方案,而不是规范。

TLDR;

如果您需要通过互联网进行实时双向通信,而客户端是Web浏览器,则最佳选择是Web套接字。 然后,您可以在Web套接字上实现应用程序级协议,以实现RESTful Web服务。


REST架构风格大多假设有2个实体即。 客户端和服务器。

随着我们更多地转向实时Web和反应系统的开发,WebSocket将突出地开始取代REST API的使用。

WS允许数据推送和拉取,这解决了服务器和客户端的概念。

STOMP,AMQP,XMPP可用作消息传递协议。

数据本身可能是JSON或Google协议缓冲区,也可能是Apache Avro。

WebSockets不依赖于Web服务器,但可以在移动应用程序或桌面应用程序等独立应用程序中开发。


我不明白为什么要将XMPP转换为REST然后在WS上运行REST。 WebSocket的目的是将XMPP协议直接带到浏览器,从而避免所有的翻译问题。

有一些JavaScript库可以将XMPP从浏览器与服务器通信。 您所需要的只是将来自WS的XMPP流量代理到TCP中,然后直接进入您的XMPP服务器。 Kaazing有一个网关 ,可以让你这样做。

如果要使用开源,则需要编写JavaScript XMPP库。 有一些示例显示如何为简单协议编写JS库。 您只需找到一个并将概念扩展到XMPP协议。

回顾一下,以下是架构的外观:

您的XMPP客户端代码< - > XMPP JavaScript库< - > WebSocket over http < - > WebSocket to TCP Proxy < - > XMPP Server

其中XMPP客户端代码和XMPP JavaScript库在浏览器中运行,而WS到TCP代理以及XMPP服务器都是服务器端的。


我创建了一个项目,将回调添加到Web套接字发送功能: https://github.com/ModernEdgeSoftware/WebSocketR2https://github.com/ModernEdgeSoftware/WebSocketR2

建立消息ID,以便客户端可以实现回调。 它会在超时后处理消息重试,并在连接断开时重新连接到服务器。 然后,您可以通过添加动词和路径将有效负载构建为RESTful。

这类似于视频游戏工作室使用UDP来实现他们所需的速度,但他们的网络代码实现了许多类似于TCP的可靠性功能。


我理解这篇文章真的很老了,但是想进一步研究一下“如果我选择一个REST架构我会丧失实时通信能力的概念吗?”。

总之,没有。 我有许多REST风格的实现,他们利用REST来实现兼容性,可发现性,以及在物联网的阴影下跨不同设备进行扩展的方法。

但是,除了REST之外还使用WS来促进近实时传输。 还有一些抽象确实对此有所帮助,使您可以专注于构建API并决定消费应用程序的RT组件应如何运行。

如果您正在寻找构建REST API并且希望避免为您的RT需求重新创建轮子,我建议您查看Tibco Smart-Sockets或SignalR等内容。


::...
免责声明:
当前网页内容, 由 大妈 ZoomQuiet 使用工具: ScrapBook :: Firefox Extension 人工从互联网中收集并分享;
内容版权归原作者所有;
本人对内容的有效性/合法性不承担任何强制性责任.
若有不妥, 欢迎评注提醒:

或是邮件反馈可也:
askdama[AT]googlegroups.com



自怼圈

DU21.1
关于 ~ DebugUself with DAMA ;-)


关注公众号, 持续获得相关各种嗯哼:
zoomquiet


粤ICP备18025058号-1
公安备案号: 44049002000656 ...::