Sockets 通过web套接字进行通信的协议
我正在处理一个带有大型复杂服务器端组件的项目的客户端。客户端将作为移动应用程序部署在其他上下文中 对于客户机-服务器通信,有两种相反的观点:Sockets 通过web套接字进行通信的协议,sockets,web-applications,websocket,protocols,rpc,Sockets,Web Applications,Websocket,Protocols,Rpc,我正在处理一个带有大型复杂服务器端组件的项目的客户端。客户端将作为移动应用程序部署在其他上下文中 对于客户机-服务器通信,有两种相反的观点: 休息 使用web套接字 就个人而言,我不介意采用哪种方法,只要生成的API经过深思熟虑、可理解且可扩展 根据以前在复杂的基于C++的应用程序上使用TCP套接字的经验,我知道roll-your自己的语法/协议很快就会变得不一致、混乱和难以管理 对于使用web套接字的客户机-服务器通信,是否有任何通用样式或协议,如REST或SOAP?在设计您自己的客户机-
- 休息
- 使用web套接字
对于使用web套接字的客户机-服务器通信,是否有任何通用样式或协议,如REST或SOAP?在设计您自己的客户机-服务器通信方案/协议方面,有什么指导原则或最佳实践吗?假设使用java,我喜欢Cometd(www.Cometd.org)作为一种消息传递机制,它位于http、websocket甚至spdy等协议之上,或者任何新的协议之上。这样做的吸引力在于,您可以对该api进行编码,它可以无缝地为给定的客户机/服务器组合确定最佳的底层协议。如果您使用的是旧的IE,那么它会返回到正常的http,但如果是新的IE,那么它可能会选择WebSocket。如果您使用的是chrome或firefox,那么您将获得spdy,当基于spdy的http/2.0登陆时,您将能够更新cometd并免费获得它。此外,在websockets之上还有一个更高级的协议,您可以在穿越隧道和失去连接的情况下获得消息恢复。适用于聊天应用程序或希望通过有序消息等来维护状态的应用程序。我喜欢bayeux协议(Comet实现的协议)用于这些功能
所以就我个人而言,我并不认为REST和websocket是竞争或对立的,它们是不同的生物。REST是一种源于HTTP风格的无状态环境的解决方案,它玩弄URL的约定,而websocket是HTTP的替代协议。在REST中,您不太可能关心如何预热TCP连接以获得更好的吞吐量,但在websocket或spdy等寿命更长的连接中,这类事情变得更加常见。虽然http/1.1和流水线技术是一种选择,但由于缺乏支持,它还没有发挥出它的潜力,直到最近移动浏览器才真正开始默认使用它。杰西,没有任何有意的怠慢,我将在一些研究之后回答我自己的问题 我没有遇到任何休息的等价物。当前的趋势似乎是使用发送和接收对象。在面向JavaScript的世界中,这似乎是明智的,它允许消息在收到消息时立即更新数据 例如: