| 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 |