【问题标题】:How to set Websocket to communicate with a client and a server-sent-events server?如何设置 Websocket 与客户端和服务器发送事件服务器进行通信?
【发布时间】:2015-09-14 05:38:21
【问题描述】:

我需要在浏览器和 REST API 服务之间建立双向通信。

我面临的最复杂的事情之一是每秒检查 API 是否有更新。

我有两种沟通方式

  1. 浏览器将数据和命令传递给 API。 API 执行命令并返回响应。
  2. 每秒检查一次API,更新用户缓存,将缓存的缓存内容发送给浏览器。

我尝试了不同的技术来处理这个问题,但没有一个效果很好,而且都不能扩展。

这是我尝试过的一些技巧

  1. 使用 Javascript 中的 setInterval() 函数每秒调用一次 API。
  2. 服务器发送事件 (SSE)
  3. 使用 ShardWorker 内的 setInterval() 函数每秒调用一次 API。

我希望我可以使用 WebSocket 和 node.js 进行这种通信。

WebSocket 如何处理上面列出的两种通信类型?

【问题讨论】:

    标签: javascript node.js websocket


    【解决方案1】:

    处理这个问题的最简单方法是使用 socket.io

    http://socket.io/docs/你可以找到文档,

    基本上在客户端你可以做 `socket.on('cache', function(msg) { //blabla });

    而在服务端,缓存更新时socket.emit('cache', msg);

    【讨论】:

    • 我遇到了 socket.io,但请注意该技术的工作原理。我是否需要设置 nodejs 服务器来处理 API 请求以及 websocket 作为中间人?如何每秒 ping API 以获取新数据?
    • API 和 socket.io 服务器可以共存于同一服务器中。基本上,客户端不会每秒都要求数据,而是在数据可用时作为服务器发送数据。当然,您必须知道数据何时更新,以便服务器可以将其发送给客户端
    • 我还是一头雾水。 The Node 服务器如何知道 API 有新数据,而不是每秒 ping 一次? API 是一个外部服务,我必须每秒检查一次以查看是否有新事件。
    • API 是你的吗?如果是,则您可以访问数据,并且确切地知道缓存中何时有新数据,因此您可以发送它。如果 API 不是您的,那么唯一的解决方案就是每分钟都向客户端询问
    • API 不是我的。所以我必须每秒ping一次。但是我将如何将 Websocket 设置为每秒 ping 服务器,更新缓存“数组”,然后将数据发送到客户端。我不想每次刷新浏览器或打开新标签页时都打开与 API 的新连接
    猜你喜欢
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2012-06-03
    • 2023-03-08
    • 2021-06-07
    • 1970-01-01
    • 1970-01-01
    • 2014-08-12
    相关资源
    最近更新 更多