服务器与服务器之间是否可以通过Websockets进行通信?

时间:2019-04-06 19:42:59

标签: node.js socket.io

我试图让2台服务器相互通信,我对websockets还是很陌生,所以有点令人困惑。另外,只是为了把它放在那里,我并不想这样做:websocket communication between servers;

我的目标是基本上使用套接字从另一台服务器读取数据(如果可能的话?),我将尝试在下面轻松解释更多内容;

我们假设有一个名为https://www.test.com的网站(进入该网站会返回一个对象)

使用普通的HTTP请求,您只需执行以下操作:

$.get('https://www.test.com').success(function (r) {
    console.log(r)
})

这将返回r,这是一个类似{test:'1'};

的对象

根据我对websockets的了解,现在您不能从它们返回数据,因为您实际上并没有“请求”数据,只是通过上述套接字发送数据。

由于我知道test.com返回什么,而且我知道我需要的所有标头,是否有可能只用test.com打开一个套接字并等待更改数据而无需请求它?

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

如果任何人有任何指向文档的链接或任何试图帮助解释的内容,将不胜感激,我只想了解其工作原理。 (甚至可能的话)

1 个答案:

答案 0 :(得分:0)

是的,我可以采取措施(假设我正确理解了您的需求)。您可以在两个服务器之间建立一个websocket连接,然后任何一方都可以将数据发送到另一方。这将在另一台服务器上触发一个事件,它将作为该事件的一部分接收发送的数据。您可以从serverA到serverB或从反之亦然进行此操作。

在node.js中,一切都是事件驱动的。因此,您将建立webSocket连接,然后只需设置一个事件处理程序即可在数据到达时触发。然后,只要其他服务器有要发送的更新数据,它就可以发送新数据。这称为“推”模型。因此,您可以建立webSocket连接,而无需serverA询问serverB是否有任何新数据,而是只要有新数据可用,serverB就会将新数据发送到serverA。正确完成后,这既高效又及时(因为没有轮询间隔,并且在没有新内容时也不会浪费任何周期来查询数据)。

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

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