Máy chủ WebSocket Python

Có nhiều cách khác nhau để máy tính có thể giao tiếp với nhau. Các phương thức giao tiếp phổ biến nhất trong số đó là HTTP và WebSocket. Trong bài viết này, chúng ta sẽ tìm hiểu sâu về mạng máy tính và tìm hiểu thêm về Websocket, đồng thời tạo một máy chủ WebSocket bằng Python ở phần cuối

Mục lục

Giao thức là gì?

Máy tính rất tệ trong việc giao tiếp với các máy tính khác. Vì vậy, họ phải tuân theo một bộ quy tắc nhất định để làm việc với nhau và bắt đầu. Bộ quy tắc này là các giao thức

Các giao thức cung cấp cấu trúc và logic thích hợp cho các quy trình được máy tính gửi hoặc nhận. Thông qua việc sử dụng các giao thức, máy tính kết nối và chia sẻ dữ liệu trên internet. Một số loại giao thức kết nối với internet, mỗi loại có các trường hợp sử dụng khác nhau. Một trong số đó là HTTP, còn được gọi là Giao thức truyền siêu văn bản

HTTP là gì?

Giao thức truyền tải siêu văn bản hay HTTP là một giao thức đóng vai trò là nền tảng cơ bản của công nghệ Web mà chúng ta sử dụng ngày nay. Đó là một giao thức máy chủ-máy khách sử dụng các phương thức đặc biệt như yêu cầu, tin nhắn được gửi từ máy khách đến máy chủ và phản hồi, tin nhắn/dữ liệu được máy chủ gửi đến máy khách như một phản hồi cho yêu cầu

Khi client sử dụng trình duyệt để truy cập vào bất kỳ trang web nào, client sẽ gửi một yêu cầu GET đến server thông báo rằng nó đã sẵn sàng nhận dữ liệu cần thiết. Sau đó máy chủ gửi phản hồi chứa tài nguyên của trang web. Trình duyệt sử dụng các tài nguyên này để xây dựng giao diện người dùng của trang web. Người dùng tương tác với giao diện người dùng để duyệt thêm và truy cập nhiều dữ liệu dễ dàng hơn. Bất cứ khi nào người dùng gửi bất kỳ biểu mẫu nào, trình duyệt sẽ gửi yêu cầu POST đến máy chủ chứa dữ liệu được điền thông qua biểu mẫu. Mặc dù các phương thức GET và POST là đủ để chạy Trang web, vẫn có nhiều phương thức khác như PUT, PATCH, v.v. thực hiện các tính năng phức tạp một cách dễ dàng

Để biết thêm thông tin chuyên sâu về HTTP, hãy truy cập bài viết này của Mozilla

Ổ cắm là gì?

Nếu hai máy tính/chương trình được kết nối qua internet, thì trong kênh giao tiếp hai chiều này, mỗi điểm cuối được gọi là ổ cắm. Mỗi ổ cắm bên trong máy tính có một địa chỉ ổ cắm duy nhất. Địa chỉ ổ cắm chứa địa chỉ IP của máy và số cổng mà ổ cắm được mở cho các kết nối

Đối với kết nối hai chiều trong các ứng dụng thông qua ổ cắm, trước tiên, máy chủ sẽ tạo một ổ cắm và tự gắn vào nó. Các máy chủ sử dụng các ổ cắm này để lắng nghe mọi yêu cầu kết nối đến của máy khách. Máy khách tạo một ổ cắm và sử dụng ổ cắm này để cố gắng kết nối với ổ cắm máy chủ. Ngay sau khi kết nối được thiết lập, giao tiếp giữa hai máy tính có thể diễn ra cùng với việc truyền dữ liệu

Để biết thêm về ổ cắm, hãy tham khảo bài viết này

Websockets là gì?

Websockets là kênh liên lạc hai chiều. Do đó, khi máy khách kết nối với máy chủ thông qua WebSocket, máy khách và máy chủ sẽ tương tác với nhau nhiều lần trong một kết nối. Websockets có giao thức kết nối song công. Về cơ bản, kết nối sẽ tồn tại miễn là cả hai thành viên của kênh (máy khách và máy chủ) vẫn được kết nối. Nếu bất cứ ai ngắt kết nối, toàn bộ kết nối sẽ bị hỏng

Để biết thêm về ổ cắm, hãy tham khảo bài viết này

Ổ cắm web so với HTTP

Websocket HTTP Đến websocket là hai chiều. HTTP là một kênh truyền thông một chiều. Websocket duy trì kết nối miễn là cả hai đầu được kết nối. Kết nối HTTP bị ngắt ngay khi máy chủ đưa ra phản hồi cho yêu cầu của máy khách. Các ứng dụng thời gian thực sử dụng ổ cắm web vì dữ liệu cập nhật thường xuyên Các ứng dụng web đơn giản sử dụng HTTP có dữ liệu giữ nguyên trong thời gian dài hơn. Các ứng dụng yêu cầu máy khách duy trì kết nối và tiếp tục nhận đầu vào, hãy sử dụng websockets Các ứng dụng không yêu cầu cập nhật dữ liệu thường xuyên và đầu vào từ người dùng, hãy sử dụng HTTP

Ưu điểm của WebSocket

  • Hơn nữa về tốc độ, websockets nhanh hơn HTTP
  • Dữ liệu trên website cập nhật rất thường xuyên thông qua luồng dữ liệu liên tục đến từ hai phía
  • Hơn nữa, kết nối giữa máy khách và máy chủ vẫn tồn tại miễn là được yêu cầu

Hạn chế của WebSockets

  • Không cần sử dụng ổ cắm web nếu không cần truyền luồng dữ liệu liên tục
  • Chỉ giao tiếp thông qua websockets vốn không thể mở rộng

Xây dựng ứng dụng trò chuyện bằng WebSockets

Đầu tiên, tạo một máy chủ lặp lại “máy khách đã kết nối” bất cứ khi nào máy khách được kết nối

import websockets import asyncio # Server data PORT = 7890 print("Server listening on Port " + str(PORT)) # A set of connected ws clients connected = set() # The main behavior function for this server async def echo(websocket, path): print("A client just connected") # Store a copy of the connected client connected.add(websocket) # Handle incoming messages try: async for message in websocket: print("Received message from client: " + message) # Send a response to all connected clients except sender for conn in connected: if conn != websocket: await conn.send("Someone said: " + message) # Handle disconnecting clients except websockets.exceptions.ConnectionClosed as e: print("A client just disconnected") finally: connected.remove(websocket) # Start the server start_server = websockets.serve(echo, "localhost", PORT) asyncio.get_event_loop().run_until_complete(start_server) asyncio.get_event_loop().run_forever()

Code language: Python (python)

Sau đó, tạo máy khách kết nối với máy chủ

import websockets import asyncio # The main function that will handle connection and communication # with the server async def listen(): url = "ws://127.0.0.1:7890" # Connect to the server async with websockets.connect(url) as ws: # Send a greeting message await ws.send("Hello Server!") # Stay alive forever, listening to incoming msgs while True: msg = await ws.recv() print(msg) # Start the connection asyncio.get_event_loop().run_until_complete(listen())

Code language: Python (python)

Phần kết luận

Việc sử dụng websocket phụ thuộc vào loại ứng dụng đang phát triển. Các ứng dụng web như Trò chơi hoặc phân tích thời gian thực, v.v., sử dụng ổ cắm web để duy trì luồng dữ liệu liên tục, nếu không thì HTTP thông thường và các phương thức của nó đủ để một dự án hoạt động trên internet

Học lập trình trên codedamn

Codedamn là một nền tảng mã hóa tương tác với rất nhiều khóa học lập trình hấp dẫn có thể giúp bạn có được công việc viết mã đầu tiên của mình. Đây là cách

  • Bước 1 - Tạo một tài khoản miễn phí
  • Bước 2 - Duyệt qua các lộ trình có cấu trúc (đường dẫn học tập) hoặc xem tất cả các khóa học
  • Bước 3 - Thực hành viết mã miễn phí trên các sân chơi lập trình
  • Bước 4 - Nâng cấp lên tài khoản thành viên Pro để mở khóa tất cả các khóa học và nền tảng

Lập trình là một trong những công việc có nhu cầu cao nhất hiện nay. Học lập trình có thể thay đổi tương lai của bạn. Tất cả tốt nhất

Chia sẻ là quan tâm

Bạn có thích những gì Aman Ahmed Siddiqui viết không?

Làm cách nào để tạo máy chủ WebSocket bằng Python?

Ứng dụng khách WebSocket với Python . py” và nhập các gói như chúng ta đã làm trong mã máy chủ Create a new File “client.py” and import the packages as we did in our server code . Bây giờ, hãy tạo một hàm không đồng bộ Python (còn gọi là coroutine). kiểm tra xác định không đồng bộ (). Chúng tôi sẽ sử dụng chức năng kết nối từ mô-đun WebSockets để xây dựng kết nối máy khách WebSocket.

Làm cách nào để cài đặt WebSocket trong Python?

Cài đặt .
Để cài đặt python-socks để sử dụng proxy và wsaccel để tăng hiệu suất nhỏ, hãy sử dụng. pip3 cài đặt websocket-client[tùy chọn]
Để cài đặt ổ cắm web để chạy thử nghiệm đơn vị bằng máy chủ tiếng vang cục bộ, hãy sử dụng. pip3 cài đặt websocket-client[test]

Máy chủ WebSocket là gì?

Máy chủ WebSocket không gì khác hơn là một ứng dụng lắng nghe trên bất kỳ cổng nào của máy chủ TCP tuân theo một giao thức cụ thể . Nhiệm vụ tạo một máy chủ tùy chỉnh có xu hướng khiến mọi người sợ hãi; .

WebSocket có nhanh hơn API REST không?

Thời gian phản ứng nhanh . WebSockets allow for a higher amount of efficiency compared to REST because they do not require the HTTP request/response overhead for each message sent and received.