Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets 通过web套接字进行通信的协议_Sockets_Web Applications_Websocket_Protocols_Rpc - Fatal编程技术网

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套接字
就个人而言,我不介意采用哪种方法,只要生成的API经过深思熟虑、可理解且可扩展

根据以前在复杂的基于C++的应用程序上使用TCP套接字的经验,我知道roll-your自己的语法/协议很快就会变得不一致、混乱和难以管理


对于使用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的世界中,这似乎是明智的,它允许消息在收到消息时立即更新数据

例如:

我尝试着按照这些思路编写自己的协议。然而,我遇到的最完整的协议是。该协议的另一个优点是,如果您是在混合套接字和HTTP应用程序中编写,那么可以通过HTTP和WebSockets使用相同的消息传递系统

我遇到的另一种方法是将退出的消息传递协议“移植”到WebSocket(不管它们是否使用JSON)。因此,例如,(JSON-RPC的基础)可以简单地重新实现,以便通过套接字使用。实际上,也可以通过套接字重新实现

我遇到了一个很好的、很小的协议,尽管上面的一个链接是。那也可以移植,而且。

你看过吗

从上页:

WebSocket协议已经内置到现代浏览器中,并提供双向、低延迟的基于消息的通信。然而,同样地,WebSocket it是相当低级的,只提供原始消息传递

现代Web应用程序通常需要更高级别的消息传递模式,如发布和订阅以及远程过程调用

这是WebSocket应用程序消息传递协议(WAMP)进入的地方。WAMP在一个协议中向WebSocket添加了RPC和PubSub的高级消息传递模式

从技术上讲,WAMP是一个正式注册的WebSocket子目录(运行在WebSocket之上),它使用JSON作为消息序列化格式

WAMP采用开放式Web标准,其设计易于使用和实现