インターネットの急速な発展に伴い、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 アプリケーションを実装する方法を紹介します。
コマンド ラインに次のコマンドを入力して、WebSocket-Server ライブラリをインストールします:
pip install websocket-server
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 サーバーの実行
python server.py
クライアント コードの作成
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 プログラミングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。