socket、socketio 和 websockets 之间的区别

Difference between the socket , socketio, and websockets

谁能解释一下 socket、socketio、flask socketio 与 python 的区别? 为了使用这个带有 flutter 的套接字,我应该在后端编写什么代码?比如我应该写服务器和客户端还是只写客户端?

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

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

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

但是如果你想更实时地获取信息,比如聊天,你就必须一直请求。

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

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

要实现实时应用,必须同时编写服务端和客户端,客户端需要连接服务端。

如果你想做一个视频通话应用程序,那么你需要交换一些信息,比如SDP, ICE Candidate,等等。所以要交换这些信息,你必须开发一个信令服务器,以便服务器可以发送这些信息实时到其各自的客户端。

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

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

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

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

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

要从您的 flutter 应用程序访问 Socket.IO 服务器,您需要使用 Socket.IO 客户端。我自己不用flutter,所以不推荐。

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

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