質問
Mitsuru Amano · 2021年3月13日

%CSP.WebSokectの非同期動作(SharedConnection=1)でソケットクローズの検知

こんにちは、皆さん

私は、%CSP.WebSocketの非同期動作(SharedConnection=1)で、ソケットのクローズを検知する手段が見つからなくて困っています。

WebアプリケーションとIRIS間でソケットの接続、データの送受信は出来ましたが、Webアプリケーション側でソケットクローズしたとき、IRIS側でそれを検知する方法が分かりませんでした。

どなたか、IRIS(サーバ側)でソケットのクローズを検知する方法をご存じでしたら教えて下さい。

$ZV: IRIS for Windows (x86-64) 2020.1 (Build 215U) Mon Mar 30 2020 20:14:33 ED
Product version:
IRIS 2020.1
00
1 0 3 37
Log in or sign up to continue

返信

Amanoさん、こんにちは。
非同期動作の場合、Serverメソッドを正常終了(quit $$$OK)すると、その後メッセージを受信するとOnClientMessage()が呼ばれます。

Method OnClientMessage(data As %String = "", close As %Integer) As %Status
{
    // メッセージ受信処理
    Quit 1
}

ここで、dataはクライアントから送信されたメッセージが入り、クライアントがWebSocketをcloseすると、closeパラメータに1が入ります。

OnClientMessageの戻り値が1の場合、正常終了とみなされます。
 

Toshihikoさん

返信ありがとうございます。

なるほど、"OnClientMessage"ですね。ちょっと試して見ます。

toshihikoさん

Goodでした。

期待通りの動作です。

有難うございました。