ホームページ >バックエンド開発 >Python チュートリアル >Python サーバー プログラミング: WebSocket サーバーの実装

Python サーバー プログラミング: WebSocket サーバーの実装

WBOY
WBOYオリジナル
2023-06-19 09:51:104958ブラウズ

近年、WebSocket テクノロジーの人気が高まっており、ブラウザとサーバー間のリアルタイム通信の標準的な選択肢となっています。 Python では、いくつかの成熟したライブラリを通じて WebSocket サーバー開発を実装できます。この記事では、WebSocket テクノロジの導入に基づいて、Python を使用して WebSocket サーバーを開発する方法を説明します。

1. WebSocket とは

WebSocket は、単一の TCP 接続上で全二重通信を行うためのプロトコルです。つまり、クライアントとサーバー間でリアルタイム通信を実現できます。通信ごとに新しい HTTP 接続を開く必要があります。 WebSocket は、チャット ルーム、Web ゲーム、データ視覚化などの一般的なリアルタイム通信シナリオで広く使用されています。

WebSocket プロトコルでは、クライアントとサーバー間の通信は「フレーム」を介して完了します。フレームとはWebSocketにおけるデータ送信の基本単位であり、「コントロールフレーム」と「データフレーム」の2種類で構成されます。制御フレームはハンドシェイクやその他の操作などの情報対話のプロセスを制御するために使用され、データ フレームは特定のデータ コンテンツを転送するために使用されます。

WebSocket の利点の 1 つは、単一の TCP ソケットのみを使用してクライアントとサーバー間の双方向通信を可能にし、複数の HTTP 接続と切断の問題を回避し、通信遅延を軽減できることです。

2. Python で WebSocket サーバーを開発する

Python エコシステムには、Tornado、Twisted、aiohttp など、WebSocket サーバーの実装に使用できる優れたサードパーティのオープン ソース ライブラリがいくつかあります。 、Sanic など。Tornado と Twisted はどちらも Python の伝統的なネットワーク プログラミング ツールであり、Python で WebSocket サーバーを開発する場合に最適な選択肢です。

以下ではTornadoを例に、PythonでWebSocketサーバーを開発する具体的な実装方法を紹介します。

まず、Tornado ライブラリをインストールする必要があります。これは pip install tornado コマンドでインストールできます。

次に、Tornado に基づいて WebSocket サーバーを作成します。コードは次のとおりです。

import tornado.websocket
import tornado.httpserver
import tornado.ioloop
import tornado.web

class WebSocketHandler(tornado.websocket.WebSocketHandler):
    def open(self):
        print("WebSocket opened")

    def on_message(self, message):
        print("Message received: {}".format(message))
        self.write_message("You said: " + message)

    def on_close(self):
        print("WebSocket closed")

    def check_origin(self, origin):
        return True

app = tornado.web.Application([(r"/websocket", WebSocketHandler)])
server = tornado.httpserver.HTTPServer(app)
server.listen(8000)
tornado.ioloop.IOLoop.instance().start()

上記のコードは、WebSocket のオープン、メッセージ受信、クローズを実装する WebSocketHandler クラスを定義します。サーバ。このうち、open() メソッドは WebSocket 接続確立後に呼び出され、on_message() メソッドは WebSocket 送信処理中にメッセージを受信したときに呼び出され、on_close() メソッドは WebSocket 接続が閉じられたときに呼び出されます。

check_origin() メソッドは、クロスオリジン リクエストの構成に使用されます。この例では、すべてのオリジンを許可します。 WebSocketHandler クラスでは、HTTPRequest と WebSocketRequest リクエストを同時に処理するため、アプリを通じて WebSocketHandler クラスを登録し、リスニング ポートを 8000 に指定する必要があります。

最後に、IOLoop を通じて接続リクエストを監視し、処理します。

このコードを実行した後、WebSocket サーバーを起動し、ブラウザに localhost:8000/websocket と入力して接続をテストできます。

3. 結論

この記事では、WebSocket テクノロジーの原理と Python での実装方法を紹介します。Python では、Tornado を使用して WebSocket サーバーを実装できます。WebSocket テクノロジーを使用すると、簡単に WebSocket サーバーを実装できます。リアルタイムに通信できる さまざまなWebアプリケーションに機能が追加されます。現在 Python を使用して Web アプリケーションを開発しており、WebSocket を使用してリアルタイム通信機能を実装したい場合は、Tornado が適しています。

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

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