Home Backend Development Python Tutorial Introduction to the concept and application of WebSocket in Python's Tornado

Introduction to the concept and application of WebSocket in Python's Tornado

Oct 20, 2018 pm 03:31 PM
python

This article brings you an introduction to the concept and application of WebSocket in Python's Tornado. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.

The asynchronous nature of Tornado makes it very suitable for high-concurrency processing of servers. The persistent connection application framework between the client and the server is a typical application of high concurrency. WebSocket is the HTML5 standard technology that establishes a persistent connection between the HTTP client and the server. This chapter will explain the application of WebSocket technology in the Tornado framework.
WebSocket protocol is a new standard protocol (RFC6455) defined by HTML5, which implements full-duplex communication between the browser and the server.

1. WebSocket application scenarios

Traditional HTTP and HTML technologies use the client to actively send requests to the server and obtain responses. However, as the demand for instant messaging increases, this communication model sometimes cannot meet the needs of applications.

WebSocket is similar to ordinary Socket communication. It breaks the original one-to-one communication model of HTTP's Request and Response, and also breaks the application scenario where the server can only passively accept client requests. Perhaps readers have heard of dynamic client technologies based on traditional HTTP such as Ajax and Long poll, but these technologies all use polling technology, which consumes a lot of network bandwidth and computing resources.

WebSocket is the HTML5 standard formulated to deal with such scenarios. Compared with ordinary Socket communication, WebSocket defines a basic interaction process at the application layer, making server frameworks such as Tornado and JavaScript clients Standard WebSocket modules can be built.

The characteristics of WebSocket are summarized as follows:

  • WebSocket is suitable for scenarios where the server actively pushes.

  • Compared with technologies such as Ajax and Long poll, the WebSocket communication model is more efficient.

  • WebSocket still completes Internet communication with HTTP.

  • Because it is a standard protocol of HTML5, it is not blocked by corporate firewalls.

2. Communication principle of WebSocket

The communication principle of WebSocket is to establish a TCP persistent link between the client and the server, so that the current When the server has messages that need to be pushed to the client, it can communicate instantly.

Although WebSocket is not HTTP, because HTML content is encapsulated and transmitted by HTTP on the Internet, WebSocket still needs to cooperate with HTTP. The IETF defines the standard process for establishing a WebSocket channel based on an HTTP link in RFC6455.

The client tells the server that it needs to establish a WebSocket long link channel by sending the following HTTP Request:

GET /stock_info/?encoding=text HTTP/1.1
Host:echo.websocket.org
Origin:http://websocket.org
Cookie:__token=ubcxx13
Connection:Upgrade
Sec-WebSocket-Key:uRovscZjNol/umbTt5uKmw==
Upgrade:websocket
Sec-WebSocket-Version:13
Copy after login

Readers can find that it is still an HTTP Request packet and are very familiar with the contents.

  • HTTP request method: GET

  • Request address:/stock_info

  • HTTP version number: 1.1

  • Server host domain name: echo.websocket.org

  • Cookie information: __token=ubcxx13

But there are 4 distinctive fields in the HTTP Header. They are:

Connection:Upgrade
Sec-WebSocket-Key:uRovscZjNol/umbTt5uKmw==
Upgrade:websocket
Sec-WebSocket-Version:13
Copy after login

This is the core of WebSocket link establishment. It tells the Web server: the client wants to establish a WebSocket link. The client uses The WebSocket version is 13, the key is uRovscZjNol/umbTt5uKmw==.

After receiving the Request, the server will return a Response similar to the following if it agrees to establish a WebSocket link:

HTTP/1.1 101 WebSocket Protocol Handshake
Date:Fri,10 Feb 2012 17:38:18 GMT
Connection:Upgrade
Server:Kaazing Gateway
Upgrade:WebSocket
Access-Control-Allow-Origin:http://websocket.org
Access-Contril-Allow-Credentials:true
Sec-WebSocket-Accept:rLHCKw/SKs09GAH/ZSFhBATDKrU=
Access-Control-Allow-Headers:content-type
Copy after login

This is still a standard HTTP Response, in which the Header information related to WebSocket is :

Connection:Upgrade
Upgrade:WebSocket
Sec-WebSocket-Accept:rLHCKw/SKs09GAH/ZSFhBATDKrU=
Copy after login

The first two pieces of data tell the client: The server has converted this connection into a WebSocket link. Sec-WebSocket-Accept is the data generated after encrypting the Sec-WebSocket-Key sent by the client, so that the client can confirm that the server can work normally.

At this point, a TCP persistent link has been established between the client and the server, and the two parties can send messages to each other at any time.

The above is the detailed content of Introduction to the concept and application of WebSocket in Python's Tornado. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP and Python: Different Paradigms Explained PHP and Python: Different Paradigms Explained Apr 18, 2025 am 12:26 AM

PHP is mainly procedural programming, but also supports object-oriented programming (OOP); Python supports a variety of paradigms, including OOP, functional and procedural programming. PHP is suitable for web development, and Python is suitable for a variety of applications such as data analysis and machine learning.

Choosing Between PHP and Python: A Guide Choosing Between PHP and Python: A Guide Apr 18, 2025 am 12:24 AM

PHP is suitable for web development and rapid prototyping, and Python is suitable for data science and machine learning. 1.PHP is used for dynamic web development, with simple syntax and suitable for rapid development. 2. Python has concise syntax, is suitable for multiple fields, and has a strong library ecosystem.

Python vs. JavaScript: The Learning Curve and Ease of Use Python vs. JavaScript: The Learning Curve and Ease of Use Apr 16, 2025 am 12:12 AM

Python is more suitable for beginners, with a smooth learning curve and concise syntax; JavaScript is suitable for front-end development, with a steep learning curve and flexible syntax. 1. Python syntax is intuitive and suitable for data science and back-end development. 2. JavaScript is flexible and widely used in front-end and server-side programming.

PHP and Python: A Deep Dive into Their History PHP and Python: A Deep Dive into Their History Apr 18, 2025 am 12:25 AM

PHP originated in 1994 and was developed by RasmusLerdorf. It was originally used to track website visitors and gradually evolved into a server-side scripting language and was widely used in web development. Python was developed by Guidovan Rossum in the late 1980s and was first released in 1991. It emphasizes code readability and simplicity, and is suitable for scientific computing, data analysis and other fields.

Can vs code run in Windows 8 Can vs code run in Windows 8 Apr 15, 2025 pm 07:24 PM

VS Code can run on Windows 8, but the experience may not be great. First make sure the system has been updated to the latest patch, then download the VS Code installation package that matches the system architecture and install it as prompted. After installation, be aware that some extensions may be incompatible with Windows 8 and need to look for alternative extensions or use newer Windows systems in a virtual machine. Install the necessary extensions to check whether they work properly. Although VS Code is feasible on Windows 8, it is recommended to upgrade to a newer Windows system for a better development experience and security.

Can visual studio code be used in python Can visual studio code be used in python Apr 15, 2025 pm 08:18 PM

VS Code can be used to write Python and provides many features that make it an ideal tool for developing Python applications. It allows users to: install Python extensions to get functions such as code completion, syntax highlighting, and debugging. Use the debugger to track code step by step, find and fix errors. Integrate Git for version control. Use code formatting tools to maintain code consistency. Use the Linting tool to spot potential problems ahead of time.

How to run python with notepad How to run python with notepad Apr 16, 2025 pm 07:33 PM

Running Python code in Notepad requires the Python executable and NppExec plug-in to be installed. After installing Python and adding PATH to it, configure the command "python" and the parameter "{CURRENT_DIRECTORY}{FILE_NAME}" in the NppExec plug-in to run Python code in Notepad through the shortcut key "F6".

Is the vscode extension malicious? Is the vscode extension malicious? Apr 15, 2025 pm 07:57 PM

VS Code extensions pose malicious risks, such as hiding malicious code, exploiting vulnerabilities, and masturbating as legitimate extensions. Methods to identify malicious extensions include: checking publishers, reading comments, checking code, and installing with caution. Security measures also include: security awareness, good habits, regular updates and antivirus software.

See all articles