Node.js 是否可以使用WebSocket进行服务器到服务器的通信?

Node.js 是否可以使用WebSocket进行服务器到服务器的通信?,node.js,socket.io,Node.js,Socket.io,我正在尝试让两台服务器相互通信,我对WebSocket还很陌生,所以有点困惑。另外,我只是想说出来,我不是想这样做: 我的目标是基本上使用套接字从另一台服务器读取数据(如果可能的话?) 我们假设有一个名为的网站(访问该网站返回一个对象) 对于普通HTTP请求,您只需执行以下操作: $.get('https://www.test.com').success(function (r) { console.log(r) }) 这将返回r,这是一个类似于{test:'1}的对象 我对WebSo

我正在尝试让两台服务器相互通信,我对WebSocket还很陌生,所以有点困惑。另外,我只是想说出来,我不是想这样做:

我的目标是基本上使用套接字从另一台服务器读取数据(如果可能的话?)

我们假设有一个名为的网站(访问该网站返回一个对象)

对于普通HTTP请求,您只需执行以下操作:

$.get('https://www.test.com').success(function (r) {
    console.log(r)
})
这将返回r,这是一个类似于{test:'1}的对象

我对WebSocket的理解是,您不能从WebSocket返回数据,因为您实际上并没有“请求”数据,而是通过所述套接字发送数据

既然我知道test.com返回什么,并且我知道我将需要的所有头,那么是否可以只打开一个带有test.com的套接字并等待数据更改而不请求它

我了解客户机-服务器通信如何与socketio/websockets一起工作,我只是不确定是否可以进行服务器通信

如果任何人有任何文档链接或任何试图帮助解释的内容,我将不胜感激,我只想了解这是如何工作的。(或者如果可能的话)

是的,我想你可以做什么(假设我正确理解你的需求)。您可以在两台服务器之间建立websocket连接,然后任何一方都可以向另一方发送数据。这将在另一台服务器上触发一个事件,它将作为该事件的一部分接收发送的数据。您可以从服务器A到服务器B,或者从服务器A到服务器B,或者从服务器A到服务器B,或者从服务器A到服务器B,或者从服务器A到服务器B都可以执行此操作

在node.js中,一切都是事件驱动的。因此,您可以建立webSocket连接,然后设置一个事件处理程序,在数据到达时触发。然后,另一台服务器只要更新了要发送的数据,就可以发送新数据。这被称为“推送”模型。因此,与serverA询问serverB是否有任何新数据不同,您建立了webSocket连接,只要新数据可用,serverB就会向serverA发送新数据。如果做得正确,这将更高效、更及时(因为没有轮询间隔,也没有在没有新内容时请求数据的周期浪费)

服务器之间或客户端到服务器之间可以使用相同的模型。与客户机/服务器模型的唯一区别在于,webSocket最初必须建立在客户机到服务器之间。使用服务器到服务器模式,任何一台服务器都可以启动连接


您可以将webSocket连接想象为建立电话连接。一旦建立了电话,任何一方都可以说些什么,而另一方可以听到他们在说什么。webSocket连接类似。一旦其建立,任何一方都可以向另一端发送一些数据,而另一端将接收这些数据。这是一个开放的管道,随时可以通过任何一种方式发送数据。在node.js中,当数据到达该管道时,它会触发并触发事件,因此侦听器将获取该事件并查看发送的数据。

Wow,与手机的类比实际上让我了解了套接字,这对它们现在的工作原理很有意义,谢谢!所以,我想我应该在我原来的帖子中提到这一点,我一直在关注你上面所说的。我们会说我是服务器A,我无法访问服务器B(服务器B返回{'test':1})作为服务器A,我想在对象发生更改时侦听,然后将数据发送到服务器B。这可以通过与服务器B建立连接来实现吗?让我困惑的是,我怎么知道test.com上的对象何时被更改?因为webSocket实际上没有请求任何东西。@netsocket-拥有该对象的人必须通过webSocket将更改发送到其他服务器。如果没有serverA的合作并在对象发生变化时向其发送消息,远程serverB就无法“监视”serverA内部的对象。