On this page |
このクラスは、Houdiniの組み込みサーバーをすべてのWebSocketに対応させるための基底クラスです。
Note
WebSocket対応はPython3のみです。
セットアップ ¶
WebSocketクラスだけでは、ほとんど何もできません。
着信のUpgrade: websocket
リクエストがクラスからインスタンスを生成してその制御をWebSocketインスタンスに渡せるようにするためには、このクラスをサーバーに登録する必要があります。
インスタンスをインストールするには、デコレータを使用してWebSocketをインストールします。
サンプル ¶
以下のサンプルは、クライアントから送信されたメッセージをエコーします。
このWebSocketは、クライアントが/echo
パスにHTTPアップグレードリクエストを送信する度に使用されます。
@webSocket("/echo") class WebSocketEcho(hwebserver.WebSocket): async def connect(self, req): await self.accept() async def receive(self, text_data=None, bytes_data=None): # メッセージをテキストデータとして送信します。 await self.send(text_data)
メソッド ¶
connect(req)
→ async void
クライアントがHTTPアップグレードリクエストを送信する度にコールされます。
このコールバックでは、サーバーがアップグレードを受け入れたことをクライアントに知らせるために必ずaccept()をコールしなければなりません。
このreq
オブジェクトは、Upgradeリクエストを表現したHTTPリクエストオブジェクトです。
receive(text_data=None, bytes_data=None)
→ async void
新しいフルWebSocketメッセージを受信する度にコールされます。
このtext_data
は、メッセージがテキストメッセージだった場合はutf-8テキストです。
このbytes_data
はメッセージがバイトメッセージだった場合にはバイト配列です。
disconnect(code)
→ async void
WebSocketが閉じられた時にコールされます。
これがコールされると、今後は通信が行なわれません。
このコールバックは、connect
がコールされるとコールされることが保証されており、その主な用途はWebSocketで使用されたリソースをクリーンアップすることです。
code
は、WebSoecktを閉じる際に使用されたクローズコードです。
accept()
→ asyncio.Future
これは、必ずconnect
コールバック内でコールしてHTTPアップグラードリクエストを受け入れる必要があります。
send(message, is_binary)
→ asyncio.Future
フルメッセージをクライアントに送信する際に使用します。
非ASCIIメッセージを送信する時は必ずis_binary
をTrueにしてください。
close(close_code = 1000)
→ asyncio.Future
サーバー側でWebSocketを閉じます。
これは、WebSocketが今閉じられたことをクライアントに知らせます。
クライアントに知らされると、disconnect
コールバックがコールされます。
デフォルトのクローズコードは1000(正常)です。
See also |