通过Web套接字进行通信的协议

Oli*_*ran 9 sockets rpc web-applications protocols websocket

我正在使用大型复杂服务器端组件的项目的客户端工作.客户端将作为移动应用程序部署在其他上下文中.

对于客户端 - 服务器通信,有两种相反的观点:

  • 使用REST
  • 使用网络套接字

就个人而言,我不介意采用哪种方法,只要得到的API经过深思熟虑,可理解和可扩展.

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

是否有任何通用样式或协议,如REST或SOAP,用于使用Web套接字的客户端 - 服务器通信?有关设计自己的客户端 - 服务器通信方案/协议的指南或最佳实践吗?

gue*_*tli 9

你看过WAMP了吗?

从上面的页面:

WebSocket协议已内置于现代浏览器中,并提供双向,低延迟的基于消息的通信.但是,因此,WebSocket它的级别很低,只提供原始消息传递.

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

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

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

WAMP采用开放的Web标准,其设计易于使用且易于实施.


Oli*_*ran 3

杰西,没有任何故意的轻视,我将在经过一番研究后回答我自己的问题。

我没有遇到任何与 REST 相当的东西。当前的趋势似乎是使用JSON来发送和接收对象。这在面向 JavaScript 的世界中似乎是明智的,并且允许消息在收到时立即更新数据。

例如:

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

我遇到的另一种方法是将现有消息传递协议“移植”到 WebSocket(无论它们是否使用 JSON)。因此,例如,XML-RPC(JSON-RPC 所基于的)可以相当简单地重新实现以通过套接字使用。事实上,SOAP也可以通过套接字重新实现。

我遇到了一个不错的小型协议,尽管上面的链接之一是STOMP。这也可以被移植——而且确实如此