4

有人可以解释一下关于 python 的 socket、socketio、flask socketio 之间的区别吗?为了使用这个带有颤动的套接字,我应该在后端编写什么代码?就像我应该写服务器和客户端还是只写客户端?

4

3 回答 3

9

套接字是网络上运行的两个程序之间双向通信链路的一个端点。这是一个非常底层的东西,其他一切都是在 TCP 套接字之上实现的。

WebSocket是 Web 的标准通信协议。它允许在客户端和服务器之间建立全双工通信通道。

Socket.IO是一种建立在 HTTP 和 WebSocket 之上的通信协议,提供了额外的功能,例如自动重新连接、基于事件的通知等。

Flask-SocketIO是作为 Flask 扩展的 Socket.IO 服务器端协议的实现。

要从 Flutter 应用程序访问 Socket.IO 服务器,您需要使用 Socket.IO 客户端。我自己不使用颤振,所以我不能推荐一个。

于 2020-06-21T14:31:04.477 回答
6

HTTP 请求是这样的,如果我们使用浏览器在 URL 或搜索栏上写一些东西,那么

  1. 浏览器向服务器发送请求,即向服务器发出 HTTP 请求。
  2. 服务器用一些数据响应浏览器。

这需要一些东西,得到一些对各种各样的事情都非常有用的系统,比如阅读新闻或查看天气。

但如果你想获得更实时的信息,比如聊天,你就必须一直在请求。

Websocket 的目的是允许与后端服务器建立持久的连接,这样客户端就不必像浏览器那样等待另一个时间。

因此,任何人都可以创建一个后端和前端组合系统,该系统可以非常快速且响应迅速地对新数据做出反应,就好像它是流入您的客户端(如 Web 客户端、移动应用程序)的流一样

您必须同时编写服务器和客户端才能实现实时应用程序,并且客户端需要连接到服务器。

如果您想制作视频通话应用程序,则需要交换一些信息,例如SDPICE Candidate等。因此,要交换这些信息,您必须开发一个信令服务器,以便服务器可以将这些信息实时发送到其各自的客户。

在每一个平台上,都可以实现socket技术。所以socketio、flask socket是同一个东西在不同平台的不同形式。

于 2020-06-21T08:55:12.767 回答
3

简而言之,WebSockets 是建立在设备 TCP/IP 堆栈之上的薄传输层。其目的是为 Web 应用程序开发人员提供本质上尽可能接近原始的 TCP 通信层,同时添加一些抽象来消除在 Web 工作方式方面可能存在的某些摩擦。它们还迎合了这样一个事实,即 Web 具有额外的安全考虑,必须考虑这些因素以保护消费者和服务提供商。Ably 的深入研究是掌握 websockets 的绝佳资源:http: //go.ably.com/websockets

对于希望在客户端和服务器之间建立双向套接字连接的开发人员来说,Socket.IO 是一个很好的工具。这使得实时聊天等简单的应用程序更易于实现。Socket.IO 使许多事情变得更容易,并为不受支持的客户端提供了回退,但也有其自身的权衡。Ably 还写了一篇概念文章,概述了 Socket.IO 的主要用例以及如何开始:http ://go.ably.com/socketio

于 2020-06-22T13:48:02.093 回答