Tạo máy chủ websocket python

"Ổ cắm là một điểm cuối của liên kết giao tiếp hai chiều giữa hai chương trình đang chạy trên mạng. Một ổ cắm được liên kết với một số cổng để lớp TCP có thể xác định ứng dụng mà dữ liệu sẽ được gửi tới" - theo lời tiên tri Ổ cắm là một điểm cuối của liên kết giao tiếp hai chiều giữa hai chương trình đang chạy trên mạng. Một ổ cắm được liên kết với một số cổng để lớp TCP có thể xác định ứng dụng mà dữ liệu sẽ được gửi tới" - theo oracle

Nội dung chính Hiển thị

  • Nội dung
  • 1. Ổ cắm là gì?
  • 2. Ổ cắm tại sao cần
  • 3. Active mode of socket
  • 4. Phân loại Ổ cắm web. Ưu và nhược điểm
  • 5. Build a next socket bằng python
  • pause

Tạm dịch, một ổ cắm là một điểm cuối [điểm cuối] của một liên kết thông tin liên lạc 2 chiều giữa 2 chương trình chạy trên hệ thống mạng. Một ổ cắm được liên kết với một cổng [PORT] để tầng TCP có thể xác định danh sách ứng dụng nào đã gửi dữ liệu đến

Như vậy, socket được sử dụng cho phép một tiến trình [hay chương trình] này nói chuyện với một tiến trình [hay chương trình] khác và duy trì kết nối này

2. Ổ cắm tại sao cần

Thông thường có 2 dạng socket là web socket và unix socket. ổ cắm web và ổ cắm unix

  • Ổ cắm web là công nghệ hỗ trợ giao tiếp 2 chiều giữa máy khách và máy chủ dựa trên một giao thức kết nối [thường là TCP] để tạo ra một kết nối hiệu quả và ít tốn kém. là công nghệ hỗ trợ giao tiếp 2 chiều giữa máy khách và máy chủ dựa trên một giao thức kết nối [thường là TCP] để tạo ra một kết nối hiệu quả và ít tốn kém
  • Ổ cắm Unix là một kết nối chia sẻ dữ liệu giữa các tiến trình khác nhau trong cùng một máy tính. Khác với Web socket sử dụng một giao tiếp mạng để kết nối trên môi trường internet, Unix socket được thực hiện ở nhân hệ thống điều hành nhờ đó có thể tránh được các bước như kiểm tra định tuyến, làm điều đó giảm tốc độ nhanh hơn và . là một kết nối chia sẻ dữ liệu giữa các quá trình khác nhau trong cùng một máy tính. Khác với việc Web socket sử dụng một giao tiếp mạng để kết nối trên môi trường internet, Unix socket được thực hiện ở nhân hệ điều hành nhờ đó có thể tránh được các bước như kiểm tra định tuyến, làm điều đó giảm tốc độ nhanh hơn và

Ổ cắm web sẽ là đối tượng quan tâm chính của chúng ta ở đây và phần sau của bài viết vậy. tại sao cần sử dụng ổ cắm? . tại sao cần sử dụng ổ cắm?

  • Thứ nhất, nếu như không sử dụng socket, ta hoàn toàn có thể gửi yêu cầu liên tục sau mỗi khoảng thời gian chỉ giới hạn mỗi 3 giây tới máy chủ để kiểm tra dữ liệu có cập nhật mới hơn hay không . Nếu có, khách hàng sẽ cập nhật nó vào ứng dụng. Tuy nhiên, cách làm này rất "dở" vì máy chủ luôn bị làm phiền bởi client chưa kể đến công việc băng thông bị lãng phí và khoảng thời gian giữa mỗi lần gửi yêu cầu nếu đủ lớn cũng khiến ứng dụng không thể thực hiện được theo thời gian thực. Socket sẽ giúp giải quyết vấn đề này bằng cách duy trì kết nối để cập nhật dữ liệu theo thời gian thực. , nếu như không sử dụng socket, ta hoàn toàn có thể gửi yêu cầu liên tục sau mỗi khoảng thời gian chỉ giới hạn mỗi 3 giây tới máy chủ để kiểm tra dữ liệu có cập nhật mới hơn hay không. Nếu có, khách hàng sẽ cập nhật nó vào ứng dụng. Tuy nhiên, cách làm này rất "dở" vì máy chủ luôn bị làm phiền bởi client chưa kể đến công việc băng thông bị lãng phí và khoảng thời gian giữa mỗi lần gửi yêu cầu nếu đủ lớn cũng khiến ứng dụng không thể thực hiện được theo thời gian thực.
    Socket sẽ giúp giải quyết vấn đề này bằng cách duy trì kết nối để cập nhật dữ liệu theo thời gian thực.
  • Thứ hai, ta có thể sử dụng cùng lúc nhiều kết nối socket để tiết kiệm thời gian tiết kiệm cũng như nâng cao hiệu suất làm việc. , ta có thể sử dụng cùng lúc nhiều kết nối socket để tiết kiệm thời gian tiết kiệm cũng như nâng cao hiệu suất làm việc
  • Và cuối cùng là ổ cắm được hỗ trợ trên rất nhiều nền tảng phần cứng và phần mềm nền tảng, thích hợp với hầu hết mọi thiết bị cũng như môi trường. cuối cùng là ổ cắm được hỗ trợ trên rất nhiều nền tảng phần cứng và phần mềm nền tảng, thích hợp với hầu hết mọi thiết bị cũng như môi trường.  

3. Active mode of socket

Ổ cắm là thiết lập một kết nối giữa máy khách và máy chủ thông qua giao thức TCP/IP hoặc UDP để truyền và nhận dữ liệu qua internet. Để nói thêm, một điểm cuối [điểm cuối] được định nghĩa là cặp IP và PORT. Mọi kết nối TCP được xác định duy nhất bởi hai điểm cuối của nó do đó chúng ta có thể tạo ra rất nhiều kết nối giữa máy khách và máy chủ [thông thường mỗi máy có hàng chục cổng kết nối - PORT]. TCP/IP hoặc UDP để truyền và nhận dữ liệu qua internet. Để nói thêm, một điểm cuối [điểm cuối] được định nghĩa là cặp IP và PORT. Mọi kết nối TCP được xác định duy nhất bởi hai điểm cuối của nó do đó chúng ta có thể tạo ra rất nhiều kết nối giữa máy khách và máy chủ [thông thường mỗi máy có hàng chục cổng kết nối - PORT].   

Vì vậy socket sử dụng giao thức TCP/IP đang hoạt động như thế nào?

  • Đầu tiên máy khách sẽ mở một kết nối TCP và cố gắng kết nối với máy chủ thông qua một PORT quy định

  • Nếu kết nối thành công, máy chủ chấp nhận kết nối sẽ mở một PORT và duy trì kết nối này. Kể từ đây, cặp điểm cuối vs được đặt một trạng thái là Keep-Alive, tức là kết nối còn sống hay không. Việc đặt trạng thái là còn sống hay không phụ thuộc vào 3 yếu tố chính là khoảng thời gian không có tín hiệu, khoảng thời gian chờ bên kia phản hồi và số lần thử lại nếu kết nối gặp lỗi. Keep-Alive, tức là kết nối còn sống hay không. Việc đặt trạng thái là còn sống hay không phụ thuộc vào 3 yếu tố chính là khoảng thời gian không có tín hiệu, khoảng thời gian chờ bên kia phản hồi và số lần thử lại nếu kết nối gặp lỗi.  

Sở dĩ kết nối được duy trì là do PORT đã mở thì sẽ không đóng lại cho đến khi các điều kiện nói ở trên bị vi phạm hoặc máy khách gửi yêu cầu đóng kết nối.  

Nói dễ hiểu hơn, khách hàng thiết lập một kết nối đến máy chủ để giao tiếp và nó chỉ có nhiệm vụ ngồi nghe [nghe] mà không phải gửi yêu cầu liên tục. Máy chủ thấy có dữ liệu mới sẽ kiểm tra xem trạng thái kết nối Keep-Alive, nếu kết nối còn nó sẽ gửi dữ liệu qua máy khách

Ổ cắm sử dụng giao thức UDP, máy khách và máy chủ sẽ không thiết lập kết nối, máy chủ chỉ cần biết địa chỉ máy khách và đưa dữ liệu đến đó mà không cần biết dữ liệu có đầy đủ hay không

4. Phân loại Ổ cắm web. Ưu và nhược điểm

dựa trên giao thức mạng, người ta phân chia làm 2 dạng ổ cắm

  • Ổ cắm luồng.  

Dựa trên giao thức TCP, việc truyền dữ liệu chỉ thực hiện khi máy khách với máy chủ đã thiết lập kết nối. Stream socket còn được gọi là socket direction connection

-> điểm ưu tiên. Kết nối cần được xác định rõ ràng nên đảm bảo dữ liệu sẽ được truyền đi với tính chất tin cậy và toàn vẹn

-> Nhược điểm. Cần đợi máy khách thiết lập kết nối

  • ổ cắm datagram

based on UDP giao thức, dữ liệu truyền dữ liệu không cần thiết lập kết nối. Còn gọi là ổ cắm không hướng kết nối

-> điểm ưu tiên. Không cần thực hiện kết nối nên giảm thời gian hiển thị cho quá trình xác thực, làm tăng tốc độ truyền dữ liệu.  

-> Nhược điểm. Không tin cậy và không đảm bảo dữ liệu toàn vẹn khi gửi tới máy khách

Trong thực tế, Datagram socket thường được sử dụng để cung cấp dữ liệu tin nhắn không hạn chế như trò chơi trò chuyện, máy chủ liên tục gửi tin nhắn mới mà không cần quan tâm đến việc khách hàng đã nhận được hay chưa, đơn giản là nó đang tăng tốc

5. Build a next socket bằng python

Trong ví dụ dưới đây, ta sẽ sử dụng socket thư viện của python, cùng tìm hiểu một số phương thức nhé

  • liên kết [địa chỉ ip, cổng]. Use to listen to address ip and port
  • kết nối [ip_address]. Thiết lập một kết nối từ máy khách đến máy chủ
  • recv[kích thước buf, cờ]. Phương thức này được sử dụng để nhận dữ liệu qua giao thức TCP
  • recvfrom[kích thước buf, cờ]. Nhận dữ liệu qua UDP
  • gửi [byte, cờ]. Phương thức này để gửi dữ liệu qua TCP
  • sendto[byte, cờ]. Gửi dữ liệu qua UDP
  • đóng lại[]. Đóng một kết nối

Tìm hiểu thêm về các phương thức tại tài liệu ổ cắmtài liệu ổ cắm

Dưới đây là code demo

  • người phục vụ. py

  • khách hàng. py

  • Bài kiểm tra

pause

Việc tăng tốc độ kết nối và tài nguyên sử dụng tối ưu là một nhiệm vụ rất quan trọng trong việc xây dựng một hệ thống máy tính. Một trang web hoặc một ứng dụng di động có tốc độ tải mượt sẽ làm tăng trải nghiệm khách hàng sẽ thu hút và giữ chân khách hàng hơn là một hệ thống xử lý chậm tiến độ. Socket là một công nghệ hoàn hảo cho nhiệm vụ này

Trên đây là những kiến ​​thức cần biết về socket và ví dụ về python. Demo này chỉ mang tính chất thử nghiệm kết nối, tính hiệu quả chỉ có thể hiện trong thực tế. Nếu có đóng góp ý kiến ​​hay có câu hỏi gì các bạn hãy để lại bên dưới bình luận và nếu cảm thấy bài viết này hữu ích hãy giúp mình một đánh giá 5 sao.  

Chủ Đề