纯套接字逻辑

时间:2014-02-19 16:02:55

标签: node.js socket.io

我有一个nodejs应用程序,并且每个客户端都有一个开放的套接字连接,这就是我使用套接字的原因,因为每当数据库中的数据由外部进程更改时,我都需要更新客户端上的数据。

然而,我的应用程序中的每个其他操作都不需要套接字连接,并且主要由客户端启动(CRUD操作),但我对一件事感到困惑,因为我总是有一个开放的套接字连接,不会更好为每个操作使用该套接字连接,并使用纯socket逻辑创建应用程序?

1 个答案:

答案 0 :(得分:1)

使用websockets时可能没问题。但如果socket.io switches to XHR (AJAX) transport可能是不合理的。

看看这两种方法的不同之处:

  • 如果您想从服务器获取某些信息或更改服务器上的某些信息,如果是简单的AJAX(没有socket.io),则发送GET或POST请求, 和服务器响应。一切都很好。

  • 但是在socket.io(XHR传输)的情况下,有一个请求发送数据,另一个请求获得响应。 (您可以进行自己的实验 - 编写io.set('transports', ['xhr-polling']);并尝试将数据发送到服务器并使服务器响应 - 您将在“网络”选项卡中看到2个AJAX请求)

因此,而不是一个AJAX请求socket.io发出两个请求。 这不是因为socket.io很糟糕。这是套接字方法的一个特性。如果您希望一方(客户端或服务器)独立地从另一方发送消息,这种方法很好。这是socket.io非常好的。 但是如果你想做“请求 - 响应”的东西,最好使用简单的AJAX,因为流量经济(请注意我将简单的AJAX与socket.io AJAX进行比较.Websockets - 是另一个故事)。

但由于这个问题与方法有关,并且不能有100%的“是”或“否”答案,因此可能会有不同的意见。

对不起英语。我试着尽可能清楚地写作:)