选择Websocket REST范例
由于REST是一种体系结构样式,而不是协议,因此它可以应用于大多数任何协议形式,例如WebSocket。这正是我想做的,但我想帮助决定一种方法 在我进行研究时,我发现我可以遵循三种范式:选择Websocket REST范例,rest,websocket,socket.io,signalr,webhooks,Rest,Websocket,Socket.io,Signalr,Webhooks,由于REST是一种体系结构样式,而不是协议,因此它可以应用于大多数任何协议形式,例如WebSocket。这正是我想做的,但我想帮助决定一种方法 在我进行研究时,我发现我可以遵循三种范式: 模拟请求响应。这是在中实现的。每个客户端请求都有一个ID。每个服务器推送响应都有相同的ID,以允许请求响应之间的关联 仅通知。服务器推送一个资源地址,这意味着客户端应该对该资源执行GET以发现发生了什么变化 事件驱动的。服务器推送被设计为类似于HTTP POST,可能类似于webhook请求 我想听听那些走
- 模拟请求响应。这是在中实现的。每个客户端请求都有一个ID。每个服务器推送响应都有相同的ID,以允许请求响应之间的关联
- 仅通知。服务器推送一个资源地址,这意味着客户端应该对该资源执行GET以发现发生了什么变化
- 事件驱动的。服务器推送被设计为类似于HTTP POST,可能类似于webhook请求
- 模拟请求响应(SRR)。SwaggerSocket消息必须反序列化两次。首先查找响应ID和/或“路径”,然后将实际负载检索到“类型化”对象中。有点笨拙,但可行
- 仅通知。服务器推送消息可以反序列化为单个预定义类型,因为它只包含一个REST资源路径
- 事件驱动的。如果“事件”没有有效负载,那么这与仅通知方法基本相同。但如果存在有效负载,则可能需要再次执行两步反序列化
//client side.
hubProxy.On<HttpRequest>("EventNotice", request => {
//Take apart the HttpResponse and dispatch through
//my own routing mechanism...to handlers that
//further deserialize the inner payload.
});
//The corresponding server-push would of course be:
_context.Clients.All.EventNotice(myHttpRequest);
//客户端。
hubProxy.On(“事件通知”,请求=>{
//拆开HttpResponse并通过
//我自己的路由机制…来解决这个问题
//进一步反序列化内部有效负载。
});
//相应的服务器推送当然是:
_context.Clients.All.EventNotice(myHttpRequest);
上面的例子很容易实现。事实上,有人有示例代码(请共享!),甚至有一个用于此目的的支持库,我都不会感到惊讶
再说一次,对于这些不同的范例,你有什么建议?您建议使用哪些支持工具