纯粹的套接字逻辑

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

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

当使用websockets也许很好。 但是,如果socket.io 切换到XHR(AJAX)传输可能是不合理的。

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

  • 在简单的AJAX(没有socket.io )的情况下,当你想从服务器获取一些信息,或者改变服务器上的某些东西时,你发送GET或者POST请求和服务器响应。 一切安好。

  • 但是在socket.io (XHR传输)的情况下,有一个请求发送数据,另一个请求得到响应。 (你可以做你自己的实验 – 写io.set('transports', ['xhr-polling']);并尝试发送数据到服务器并使服务器响应 – 你会在networking标签中看到2个AJAX请求)

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

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

对不起,英文。 我试图写清楚,因为我可以:)