sockets模块与socket.io模块



我最近了解了套接字,它们与HTTP或AJAX的区别,并通过套接字模块设置套接字,在我的一些python应用程序中使用了它来进行学习。我现在研究了在网络应用程序中将它们与flask一起使用(相比之下,以前只在控制台/终端窗口中运行(,并注意到几乎所有的示例、教程和文档都使用socket.io。为什么?它与sockets模块的行为有何不同?

(注意:我不想在网络应用程序中使用任何JS,只想使用python,因为这是我熟悉的,我只是在拼凑一个概念验证(

socketssocket.io的共同点是,它们允许两个应用程序直接通过网络进行通信。然而,它们非常不同,因为它们在完全不同的网络层上运行。

套接字是在传输层上定义的,允许非常直接的通信方式,避免了更高级别协议的复杂性(但也缺乏功能(,如http和在http之上定义的服务。sockets库允许您使用这种类型的套接字。

CCD_ 4定义软件";插座";对于JavaScript应用程序,但由于该库变得非常流行(并且运行得非常好(,现在许多语言都有实现。然而,它在http之上运行(作为可能的传输之一,整个事实有点复杂(。socket.io中的"套接字"是套接字,因为它们允许直接的点对点通信,但它们在更高的抽象级别上操作。

至于决定使用哪一种,这取决于你想要沟通什么,以及你需要与谁或什么人沟通。

为了理解为什么在传输层上操作的东西与在应用层上操作有很大不同,您可能应该阅读OSI模型https://en.wikipedia.org/wiki/OSI_model

最新更新