ホームページ  >  記事  >  バックエンド開発  >  Python での WebSocket プログラミング

Python での WebSocket プログラミング

PHPz
PHPzオリジナル
2023-06-17 08:07:155417ブラウズ

インターネットの急速な発展に伴い、Websocket プロトコルも新しい通信プロトコルとして広く使用されています。 Python は一般的なプログラミング言語として、Tornado や WebSocket-Server などの優れた Websocket ライブラリを数多く備えており、開発者に優れたサポートを提供します。

この記事では、Websocket プロトコルと HTTP プロトコルとの違い、Python を使用して Websocket アプリケーションを開発する手順と実装方法を紹介します。

1. Websocket プロトコルの概要

Websocket プロトコルは、TCP プロトコル上で動作する全二重通信プロトコルです。このプロトコルは永続的な接続を提供し、クライアントとサーバー間のリアルタイムの双方向データ送信を可能にし、リアルタイム通信、オンライン ゲーム、その他のシナリオで使用できます。

Websocket プロトコルの特徴は次のとおりです。

(1) すべてのデータ送信はフレーム (Frame) に基づいて行われます。

(2) Websocket プロトコルは、ハンドシェイク フェーズ中に HTTP プロトコルを使用します。

(3) Websocket プロトコルは、データ フレームとコントロール フレームの 2 種類のフレームを提供します。データ フレームはメッセージの送信に使用され、制御フレームは接続状態の維持に使用されます。

(4) Websocket プロトコルは、接続の安定性を維持するためのハートビート メカニズムを提供します。

(5) Websocket プロトコルは、暗号化された SSL/TLS および非暗号化方式を介して通信できます。

2. Websocket プロトコルと HTTP プロトコルの違い

Websocket プロトコルと HTTP プロトコルはどちらもアプリケーション層プロトコルですが、両者の間には次のような主な違いがあります:

( 1) Websocket は永続的な接続ですが、HTTP は短い接続です。

(2) Websocketプロトコルはハンドシェイクフェーズの通信にHTTPプロトコルを使用しますが、Websocketのハンドシェイクフェーズは1回行うだけでリアルタイムのデータ通信が可能です。

(3) Websocket プロトコルはデータ送信にバイナリ フレームとテキスト フレームを使用しますが、HTTP プロトコルはテキスト データのみを送信できます。

(4) Websocket プロトコルは双方向のデータ送信を実行できますが、HTTP プロトコルは一方向のデータ送信しか実行できません。

3. Python で Websocket アプリケーションを実装する

Python には多くの Websocket ライブラリがあり、中でも Tornado と WebSocket-Server がより一般的に使用されます。この記事では、WebSocket-Server を例として、Python を使用して WebSocket アプリケーションを実装する方法を紹介します。

  1. WebSocket-Server ライブラリのインストール

コマンド ラインに次のコマンドを入力して、WebSocket-Server ライブラリをインストールします:

pip install websocket-server
  1. サーバー コードを記述する() などを使用してデータを完了します。 接続、データの受信、接続の終了などの操作。
具体的なコードは次のとおりです。

from websocket_server import WebsocketServer

# 客户端连接时触发
def new_client(client, server):
    print("New client connected and was given id %d" % client["id"])
    server.send_message_to_all("Hey all, a new client has joined us")

# 接收到客户端消息时触发
def message_received(client, server, message):
    print("Client(%d) said: %s" % (client["id"], message))
    server.send_message_to_all("Client(%d) said: %s" % (client["id"], message))

# 客户端关闭连接时触发
def client_left(client, server):
    print("Client(%d) disconnected" % client["id"])

# 建立 WebSocketServer 对象,监听 9001 端口
server = WebsocketServer(9001)
server.set_fn_new_client(new_client)
server.set_fn_message_received(message_received)
server.set_fn_client_left(client_left)

# 启动服务器
server.run_forever()

WebSocket サーバーの実行

  1. コマンド ラインに次のコマンドを入力して、WebSocket サーバーを起動します。
  2. python server.py

クライアント コードの作成

  1. WebSocket クライアントを Python で実装するには、WebSocketClient オブジェクトを作成し、そのメソッド (connect() など) をいくつか呼び出す必要があります。 、send()、close() などを使用して、接続、データの送信、および終了操作を完了します。
具体的なコードは次のとおりです:

from websocket import create_connection

# 建立 WebSocket 连接
ws = create_connection("ws://localhost:9001/")

# 发送消息
ws.send("Hello, world!")

# 接收消息
result = ws.recv()
print("Received '%s'" % result)

# 关闭 WebSocket 连接
ws.close()

以上は Python による Websocket プログラミングの手順と実装方法であり、これによりリアルタイム通信やオンライン ゲームなどのアプリケーションを実現できます。気がついた。もちろん、WebSocket-Server ライブラリに加えて、他のさまざまな Websocket ライブラリから選択できるため、開発者は自分のニーズに応じてそれらを選択して試すことができます。

以上がPython での WebSocket プログラミングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。