我刚刚开始使用socket.io,并且对Express有一些经验。我知道socket.io具有双向通信,而express只是客户端到服务器。
这让我想,为什么我们不只将socket.io与不同的命名空间一起使用,而根本不使用express?
在哪种情况下应该使用套接字vs表达?
在需要双向通信的情况下,是否建议使客户端->服务器具有express,然后将套接字用于服务器->客户端?
答案 0 :(得分:1)
首先,express和socket.io是完全不同的东西。 Express是成熟的Web服务器框架。您可以使用它来建立网站,浏览器发出的HTTP请求,API的http请求等等。
socket.io是位于webSocket协议之上的通信层,并且webSocket协议使用http服务器建立其初始连接。尽管您可以使用socket.io和Express进行一些重叠,但是它们的重叠之处要大得多。
例如,如果您要建立一个网站,则无法使用socket.io进行操作,而将使用Express之类的东西。
现在,如果您有特定的编程需求需要在任意客户端和服务器之间进行通信,那么您将有无数的选择。如果客户端位于浏览器中,而编程界面来自浏览器中的Javascript,那么您的选择就更少了。 从浏览器中,通过Express使用http ajax请求是一种选择。设置socket.io连接并定义您自己的消息是另一种选择。
通过浏览器Javascript对Express进行Ajax调用来选择socket.io的原因:
原因以选择对Express的Ajax呼叫
因此,如您所见,这个问题没有通用答案。这实际上取决于您的通信的具体情况,所需的互操作性以及代码的确切需求。
以下是有关此主题的其他参考:
Websocket vs REST when sending data to server