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