我有一个nodejs应用程序,并且每个客户端都有一个开放的套接字连接,这就是我使用套接字的原因,因为每当数据库中的数据由外部进程更改时,我都需要更新客户端上的数据。
然而,我的应用程序中的每个其他操作都不需要套接字连接,并且主要由客户端启动(CRUD操作),但我对一件事感到困惑,因为我总是有一个开放的套接字连接,不会更好为每个操作使用该套接字连接,并使用纯socket
逻辑创建应用程序?
答案 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%的“是”或“否”答案,因此可能会有不同的意见。
对不起英语。我试着尽可能清楚地写作:)