WebSocket请求 – 响应子协议

WebSocket提供了一个像人类谈话一样的双向沟通​​。 客户端可以发送数据到服务器,服务器可以随时向客户端发送数据。 但是这个问题呢? 请求 – 响应行为? 客户端可以向服务器请求一些东西并等待响应。 看起来Websocket并没有提供任何东西来将客户端数据(请求)链接到服务器数据(响应)。

这可能是子协议的工作,我有一些想法如何做到这一点(发送一个ID与请求,并等待一个相同的ID响应,直到超时期限)。

为了不重拍轮子并节省一些时间,我查看了一个现有的解决scheme,但我没有发现任何相关的东西(可能是坏的关键字)。

那么有没有人知道这种工作,或者我错过了什么?

WebSocket应用程序消息传递协议(WAMP) http://wamp.ws/为此提供了原始WebSocket上的RPC(远程过程调用)和PubSub(发布和订阅)消息模式。;

WAMP是一个合适的WebSocket子协议,使用WebSocket作为传输和JSON作为有效负载格式。 RPC是使用3条消息实现的,这些消息包含一个“Call ID”,用于将asynchronousRPC服务器响应与客户端启动的过程调用相关联。

免责声明:我是WAMP和一些(开源)WAMP实现的作者。 它是一个开放的倡议,其他人已经开始上船了。 最终,应该有一个WAMP RFC正确定义协议..但它仍然处于早期阶段。

我会使用JSON-RPC 2.0。

http://www.jsonrpc.org/specification

每个消息将是一个JSON对象。 协议声明它是否是需要响应(与ID耦合)的通话或通知。

一个支持JSON-RPC的应用程序可以很容易地检查消息对象是否包含一个方法,表示一个调用,或者不表示一个响应。

我即将build立一个JavaScript的lib来处理jsps rpc通过websocket,与ajax作为后备…

请看一下SwaggerSocket ,它是所有主要的Java WebServer支持的REST over WebSockets协议。

我使用websockets运行一个简单的请求响应程序。 请参阅“ Websocket服务器演示 ”。 您可以下载网页源代码。

看一下msg-rpc ,它提供了对简单消息接口的双向 rpc支持,包括WebSocket。

不仅是简单的rpc,它可以覆盖“客户端请求/服务器响应”行为,还支持通过Rpc服务的“服务器请求/客户端响应”行为。

为了开始,有sockjs和socket.io的例子。