kong.websocket.client
クライアント WebSocket PDK 関数。
kong.websocket.client.get_frame()
現在のフレームを取得します。
これは、インフライトのフレームやメッセージのペイロード、タイプ、およびステータスコード(クローズフレーム用)を返します。
この関数は、実行がサンドボックス化され、呼び出し元がプラグインハンドラのスコープ内にあるこれらの変数にアクセスできないプリ関数やポスト関数のプラグインのような場合に役立ちます。
フェーズ
ws_client_frame
戻り値
-
string
: フレームペイロード。 -
string
: フレームタイプ(「text」、「binary」、「ping」、「pong」または「close」のいずれか) -
number
: フレームステータスコード(クローズフレームの場合のみ返されます)
使用方法
local data, typ, status = kong.websocket.client.get_frame()
kong.websocket.client.set_frame_data(data)
現在のフレームのペイロードを設定します。
これにより呼び出し元は、アップストリームに転送される前に、実行中のWebSocketフレームの内容を上書きできます。
この関数の呼び出し 後 に実行されるプラグインハンドラには、更新されたフレームバージョンが表示されます。
フェーズ
ws_client_frame
パラメータ
-
data (
string
): 希望するフレームペイロード
使用方法
kong.websocket.client.set_frame_data("updated!")
kong.websocket.client.set_status(status)
クローズフレームのステータスコードを設定します。
これにより呼び出し元は、アップストリームに転送される前にクローズフレームのステータスコードを上書きできます。
有効なステータスコードのリストについては、WebSocket RFC を参照してください。
これが呼び出された 後 に実行されるプラグインハンドラには、更新版の ステータスコードが表示されます。
実行中のフレームがクローズフレームでない場合にこの関数を呼び出すと 例外が発生します。
パラメータ
-
status (
number
): 目的のステータスコード
使用方法
-- overwrite the payload and status before forwarding
local data, typ, status = kong.websocket.client.get_frame()
if typ == "close" then
kong.websocket.client.set_frame_data("goodbye!")
kong.websocket.client.set_status(1000)
end
kong.websocket.client.drop_frame()
現在のフレームをドロップします。
これにより、実行中のフレームがドロップされ、アップストリームに転送されなくなります。
このハンドラの 後 に実行するように設定されているプラグインハンドラはスキップされます。
クローズフレームはドロップできません。クローズフレームに対して この関数を呼び出すと例外が発生します。
使用方法
kong.websocket.client.drop_frame()
kong.websocket.client.close([status[, message[, upstream_status[, upstream_payload]]]])
WebSocket接続を閉じます。
この関数を呼び出すと、接続を終了する前に、クローズフレームがクライアントとアップストリームにただちに送信されます。
実行中のフレームはアップストリームに転送されません。そして、現在のハンドラの 後 に実行するように設定されているプラグインハンドラは実行されません。
パラメータ
-
ステータス (
number
、 オプション ): クライアントのクローズフレームのステータスコード -
message (
string
、 任意 ): クライアントのクローズフレームのペイロード -
upstream_status (
number
、 オプション ): アップストリームクローズフレームのステータスコード -
upstream_payload (
string
、 オプション ):アップストリームのクローズフレームのペイロード
使用方法
kong.websocket.client.close(1009, "Invalid message",
1001, "Client is going away")
kong.set_max_payload_size
クライアントフレームの最大許容ペイロードサイズをバイト単位で設定します。
この制限はすべてのデータ・フレーム・タイプに適用されます:
- テキスト
- バイナリ
- 継続
この制限はフレームの集計中にも評価されます。たとえば、制限が1024で、サイズがそれぞれ500の3つの継続フレームをクライアントが送信した場合、3番目のフレームはこの制限を超えます。
クライアントが制限を超えるメッセージを送信する場合、ステータスコード1009
のクローズフレームがクライアントに送信され、接続が閉じられます。
この制限は制御フレーム(close/ping/pong)には適用されません。
-
サイズ (
integer
):制限(0
はデフォルトの制限にリセットされます)
使用方法
-- set a max payload size of 1KB
kong.websocket.client.set_max_payload_size(1024)
-- Restore the default limit
kong.websocket.client.set_max_payload_size(0)