Questions tagged «websockets»

2
性能是不完全使用SignalR(网络套接字)来代替传统REST API的唯一原因吗?
我曾SignalR在多个项目中实现实时消息传递功能。它似乎工作可靠,并且非常易于学习使用。 至少对我来说,诱惑是放弃开发Web API服务,并将其SignalR用于一切。 我觉得这可以通过深思熟虑的设计来实现,如果可以的话,这意味着将需要更少的客户端代码。更重要的是,这将意味着将有一个单一的服务接口,而不是一个分离的接口,并且在最坏的情况下,可以将其连接起来而无需考虑何时渲染事物,等等。 因此,我想知道: 除了性能之外,还有其他原因不使用SignalR代替所有Web服务吗? SignalR的性能是否足以引起人们的注意? 能够将服务器端对象和服务定义转换为客户端服务访问代码而不用愚蠢的东西一直是我的梦想node.js。例如,如果我定义了一个有趣的对象InterestingObject以及该对象的服务,CRUD则InterestingObjectService可以定义到该服务的标准URL路由-例如“ / {serviceName} / {methodName}”,但是我仍然需要编写客户端代码才能访问服务。由于对象将被从客户端传递到服务器和背部,没有实际的原因有在客户端代码中显式定义对象,也无需显式定义执行CRUD操作的路由。我觉得应该有一种标准化所有方法的方法,这样就可以在假定服务访问从客户端到服务器再到服务器的工作透明的前提下编写客户端,就像我在编写WinForms或Java时一样Applet或Native App或您拥有的东西。 如果SignalR足以代替传统的Web服务使用,则它可能是实现此目的的可行方法。SignalR已经包含使集线器像我描述的服务那样工作的功能,因此我可以定义一个通用基础(CRUD)服务,该服务可以开箱即用地提供所有这些功能。然后,我几乎可以认为服务访问是理所当然的,这使我免去了重新编写代码以访问约定可以访问的内容的烦恼-更重要的是,我不得不花时间编写代码来定义如何对其进行更新。 DOM。 阅读我的编辑后,我觉得这可能有点荒谬,所以请随时问我是否对我的想法有疑问。基本上,我希望服务访问尽可能透明。

2
如何构建基于Websockets的实时大量Web应用程序?
在开发实时单页应用程序的过程中,我逐渐采用了websocket,以向用户提供最新数据。在这个阶段,我很伤心地看到,我被摧毁了太多我的应用程序的结构,和我没能找到一个解决这种现象。 在详细介绍之前,请先介绍一下上下文: 该webapp是实时SPA; 后端在Ruby on Rails中。实时事件由Ruby推送到Redis密钥,然后微节点服务器将其拉回并推送到Socket.Io; 前端位于AngularJS中,并直接连接到Node中的socket.io服务器。 在服务器端,在实时之前,我对资源进行了明确的基于控制器/模型的分离,每个过程都附加有处理。当我开始通过Websocket向用户推送内容时,这种经典的MVC设计就被完全粉碎,或者至少被绕开了。现在,我有一个管道,所有应用程序都将向下流动或多或少的结构化数据。而且我感到压力很大。 在前端,主要关注的是业务逻辑的重复。当用户加载页面时,我必须通过经典的AJAX调用加载模型。但是我还必须处理实时数据泛滥,而且我发现自己复制了很多客户端业务逻辑,以保持客户端模型的一致性。 经过一些研究,我找不到任何好的文章,文章,书籍或任何能给人们提供建议的关于如何可以并且应该如何设计现代Web应用程序体系结构的建议,并且要牢记一些特定的主题: 如何构造从服务器发送给用户的数据? 我应该只发送诸如“此资源已更新,您应该通过AJAX调用重新加载它”之类的事件,还是推送更新的数据并替换通过初始AJAX调用加载的先前数据? 如何为发送的数据定义一个一致且可扩展的框架?这是模型更新消息还是“ blahblahblah出现错误”消息 如何不从后端的任何地方发送有关所有内容的数据? 如何减少服务器和客户端上的业务逻辑重复?

1
RESTful HTTP和websocket在同一应用程序中?
如果某个应用程序已经打开WebSocket了实时供稿,是否应该将其AJAX用于与服务器的其他通信? 因为连接已经打开,我们应该将其用于Request/Response不是实时的请求吗? 我更喜欢RESTful HTTP请求,因为我发现它们更易于调试。您可以使用带有url或curl的浏览器来测试API返回的内容。您无需编写代码即可打开WebSocket。 在同一应用程序中拥有RESTful HTTP API和会很奇怪WebSocket吗?
17 rest  ajax  websockets 

2
从Websocket客户端发送时是否真的需要屏蔽
当前的Websocket RFC要求Websocket 客户端在发送时屏蔽帧内的所有数据(但不需要服务器)。以此方式设计协议的原因是为了防止客户端和服务器之间的恶意服务(代理等)更改帧数据。但是,此类服务仍然知道屏蔽密钥(在每个帧的开头按帧发送) 我是否以为这样的服务仍然可以使用该密钥来取消遮罩,更改内容,然后在将帧传递到下一个点之前重新遮罩内容呢?如果我没看错,这将如何修复假定的漏洞?

2
REST还是多层异构系统中的消息队列?
我正在为三层系统设计REST API,例如:Client application-> Front-end API cloud server-> user's home API server (Home)。 Home是家用设备,应该Front-end通过Websocket或长时间轮询来保持连接(这是我们违反REST的第一个地方,以后还会更糟)。Front-end大多数情况下会将Client请求传送到Home连接并处理一些呼叫本身。有时会Home向发送通知Client。 Front-end并Home具有基本相同的API;Client可能是Home通过LAN直接连接。在这种情况下,Home需要Client在Front-end自身上注册一些操作。 该系统中REST的优点是: REST是人类可读的; REST具有明确定义的动词(如CRUD),名词和响应代码到协议对象的映射。 它可以通过HTTP运行并传递所有可能的代理。 REST的反对意见是: 我们不仅需要一种请求-响应通信方式,还需要一种发布-订阅方式。 HTTP错误代码可能不足以处理三层通信错误。Front-end可能返回202 Accepted异步调用只是为了发现必要的Home连接断开了,应该已经连接了503; Home需要向发送邮件Client。Client将必须进行轮询Front-end或维护连接。 我们正在考虑通过Websocket上的WAMP / 高速公路来获得发布/订阅功能,这让我惊讶的是它已经看起来像消息队列。 是否值得评估一种消息队列作为传输方式? 看起来像消息队列相反是: 我需要在消息级别上自己定义CRUD动词和错误代码。 我读到一些有关“较高的维护成本”的信息,但这意味着什么? 这些考虑有多严重?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.