TMS WebcoreのWebSocketの扱いのTIPSです。
WebSocketの接続をフロントからかける場合、
接続命令 WS.connect; を行って非同期でOnConnect
イベント待ちになります。
ごく普通の話ですが、接続異常の場合リトライをしないと
フロントは話が終わってしまいます。
ということでTimerでリトライしますが、ここではまりました。
OnConnect待ちを無視して、Connectをリトライで発行すると
いつまでもつながらない状態になります。
なので、Connectからタイムアウトを取って、それから
再度Connectするプログラムにします。
これであれば、サーバー側が再起動しようが、接続してくれました。
状態管理が必要ですが、非同期は面倒ですね。
私はスレッドにしてBlocking I/Oで組むやり方のほうが好きです。
普段Delphiで組んでいると気にしていない部分だったのですが、
JavaScriptにトランスパイルされるので、頭の切替が必要だったという
話でした。
ちなみにTMS Webcoreを使ったからといってThreadでプログラムが
かけるわけではないです。
Timerで非常に遅いスキャンのシーケンス制御として書きます。
私の守備範囲はサイクリックな処理が必要な部類です。
私はステートマシン的な組み方は嫌いですね。
制御系でラダーをこれで組んでくる人がいますが、
インターロックがかみ合わないことが多いです。
ではでは。