Falconの思うままに

PASCAL好きが、気ままにマニアックなネタを

TMS Webcore WebSocket

TMS WebcoreのWebSocketの扱いのTIPSです。

WebSocketの接続をフロントからかける場合、

接続命令 WS.connect; を行って非同期でOnConnect

イベント待ちになります。

ごく普通の話ですが、接続異常の場合リトライをしないと

フロントは話が終わってしまいます。

 

ということでTimerでリトライしますが、ここではまりました。

OnConnect待ちを無視して、Connectをリトライで発行すると

いつまでもつながらない状態になります。

 

なので、Connectからタイムアウトを取って、それから

再度Connectするプログラムにします。

 

これであれば、サーバー側が再起動しようが、接続してくれました。

状態管理が必要ですが、非同期は面倒ですね。

私はスレッドにしてBlocking I/Oで組むやり方のほうが好きです。

 

普段Delphiで組んでいると気にしていない部分だったのですが、

JavaScriptにトランスパイルされるので、頭の切替が必要だったという

話でした。

 

ちなみにTMS Webcoreを使ったからといってThreadでプログラムが

かけるわけではないです。

Timerで非常に遅いスキャンのシーケンス制御として書きます。

私の守備範囲はサイクリックな処理が必要な部類です。

私はステートマシン的な組み方は嫌いですね。

制御系でラダーをこれで組んでくる人がいますが、

インターロックがかみ合わないことが多いです。

 

ではでは。