WebSocket提供像人类谈话一样的双向通信.客户端可以将数据发送到服务器,服务器可以随时向客户端发送数据.但那个问题呢?请求 - 响应行为?客户端可以向服务器询问某些内容并等待响应.似乎Websocket没有提供将客户端数据(请求)链接到服务器数据(响应)的任何内容.
这可能是子协议的工作,我有一些关于如何做的想法(发送带有请求的id并等待具有相同id的响应,直到超时时间).
为了不重新制作轮子并节省一些时间,我查看了互联网上的现有解决方案,但我没有找到任何相关的(可能是坏关键字).
那么有没有人意识到这种工作或者我错过了什么?
obe*_*tet 46
WebSocket应用程序消息传递协议(WAMP)http://wamp.ws/为此目的在原始WebSocket上提供RPC(远程过程调用)和PubSub(发布和订阅)消息传递模式.
WAMP是一个合适的WebSocket子协议,使用WebSocket作为传输,使用JSON作为有效负载格式.RPC使用3条消息实现,这些消息包含"呼叫ID",用于将异步RPC服务器响应与客户端发起的过程调用相关联.
免责声明:我是WAMP和一些(开源)WAMP实现的作者.这是一个开放的倡议,其他人已经开始上船了.最终,应该有一个WAMP RFC正确定义协议..但它仍处于早期阶段.
fid*_*dur 12
我会使用JSON-RPC 2.0.
http://www.jsonrpc.org/specification
每条消息都是一个JSON对象.协议声明它是否是想要响应(与id耦合)或通知的调用.
JSON-RPC感知应用程序可以轻松检查消息对象是否包含方法,是否表示呼叫,表示响应.
我即将构建一个javascript库来处理websocket上的json rpc,其中ajax作为后备...
(发送带有请求的 id,并等待具有相同 id 的响应,直到超时)
我创建了一个名为 WebSocketR2 的库来实现这一点(其中 R2 表示请求响应): https: //github.com/ModernEdgeSoftware/WebSocketR2
如果连接丢失,它还会处理与服务器的重新连接,如果您通过负载均衡器进行 Web 套接字,这可能会很有帮助。
最终结果是您可以在 Web 套接字发送函数上实现回调,如下所示:
var request = {
action: "login",
params: {
username: "test",
password: "password"
}
};
ws.send(request, function(response){
console.log(response)
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39499 次 |
| 最近记录: |