WebSocket与其他API的实时数据?

我需要不断访问服务器来获取金融工具的实时数据。 价格在不断变化,所以我需要每0.5秒申请新的价格。 经纪人的REST API允许我这样做,但是,我注意到在连接到服务器时有相当的延迟。 我只是注意到,他们也有websocket API。 根据我读到的,他们都有一些优点/缺点。 但是对于我想要做的事情,因为速度在这里特别重要,你会推荐哪种API? Websocket真的更快吗?

谢谢!

您所描述的最有效的操作是使用客户端和服务器之间的webSocket连接,并让服务器通过webSocket直接向客户端发送更新的价格信息,当价格变化了一些有意义的数量或者当某些最小数量时间已过,价格已变。

这可以比客户不断要求新的价格变化以及何时向客户提供新信息的时机更为有效。

因此,如果您有兴趣了解新价格水平的信息如何快速传递到客户端,那么webSocket可以更及时地获得它,因为服务器可以在新的价格信息发生改变的时刻直接发送新的定价信息给客户端在服务器上。 而使用REST调用,客户端必须轮询一些固定的时间间隔,并且只会在轮询间隔时间内获得新的数据。

webSocket在您的networking基础架构上也可以更快更简单,因为只需要less量的networking操作就可以通过已经打开的webSocket连接发送数据包,而不是为每个REST / Ajax调用创build新连接,发送新数据,然后closures连接。 在你的特定应用程序中,这个差异/改进有多大是你必须测量才能真正知道的。

但是,webSockets旨在帮助您的客户想要了解的具体情况(尽可能接近实时)在服务器上发生变化,所以我一定会认为这将是这种types的首选devise模式使用。


下面是在一个已经打开的webSocket上发送一个价格变化与进行一个REST调用有关的networking操作的比较。

的WebSocket

  1. 服务器发现价格已经改变,并立即向每个客户端发送消息。
  2. 客户收到有关新价格的消息。

REST /阿贾克斯

  1. 客户端设置一个轮询间隔
  2. 在下一个轮询间隔触发时,客户端将创build套接字连接到服务器
  3. 服务器收到打开新套接字的请求
  4. 当与服务器build立连接时,客户端向服务器发送新的定价信息请求
  5. 服务器收到新的定价信息的请求,并发送新的数据(如果有的话)的答复。
  6. 客户收到新的定价数据
  7. 客户端closures套接字
  8. 服务器接收套接字closures

正如你所看到的,从networking的angular度来看Rest / Ajax调用中还有很多事情要做,因为每个新的调用都要build立一个新的连接,而webSocket使用一个已经打开的调用。 另外,在webSocket的情况下,当新的数据可用时,服务器只是发送客户端的新数据 – 客户端不必定期请求它。

如果定价信息没有经常改变,那么REST / Ajax场景在客户端请求更新时也会经常进行“无所事事”的调用,但是没有新的数据。 WebSocket案例从来没有浪费的情况下,因为服务器只是在可用时发送新的数据。