efw WebSocket モード機能サンプル
概要
efwフレームワークはWebSocketモードをサポートし、リアルタイム通信、進捗フィードバック、ブロードキャスト機能を実現します。このサンプルは、WebSocketモードを使用して効率的なクライアント-サーバー通信を行う方法を示し、進捗表示やリアルタイムメッセージブロードキャストを含みます。
コアファイル
- WebSocketモードテストメインページ:
helloWsMode.jsp - 進捗テスト機能:
helloWsMode_progress_test.js - ブロードキャスト開始機能:
helloWsMode_broadcast_start.js - ブロードキャスト停止機能:
helloWsMode_broadcast_stop.js - ブロードキャスト受信機能:
helloWsMode_broadcast_receive.js - ブロードキャスト受信停止機能:
helloWsMode_broadcast_bye.js
機能特性説明
1. WebSocketモードの利点
リアルタイム通信
- 双方向通信: クライアントとサーバーがリアルタイムで相互にメッセージを送信可能
- 低遅延: ポーリング不要でメッセージが即時到達
- 持続的接続: 長い接続を維持し、接続確立のオーバーヘッドを削減
進捗フィードバック
// 進捗更新を送信
efw.wsSend(new Result().progress("処理中...", 50));
// 進捗完了
efw.wsSend(new Result().progress("完了", 100, true));
2. データストレージスコープ
| ストレージタイプ | WebSocketモード | 通常モード | 適用シナリオ |
|---|---|---|---|
| セッションストレージ | ✅ 読み書きサポート | ✅ 読み書きサポート | ユーザーセッションデータ、ログイン状態など |
| クッキーストレージ | ✅ 読み取りサポート ❌ 設定無効 |
✅ 読み書きサポート | - |
| コンテキストストレージ | ✅ グローバル共有 | ✅ グローバル共有 | ブロードキャストメッセージ、グローバル設定、共有データ |
注: WebSocket接続はHTTP Cookieを設定できません
3. ブロードキャストメカニズム原理
ブロードキャストプロセス
- ブロードキャスターがメッセージをContextに書き込み
- レシーバーが定期的にContextからメッセージを読み取り
- WebSocketが各クライアントにメッセージをプッシュ
コード例
// ブロードキャスターがコンテンツを設定
context.set("broadcast_content", "リアルタイムメッセージ");
// レシーバーがコンテンツを読み取り
var message = context.get("broadcast_content");
使用シナリオ
- 長時間タスク処理
// バッチデータ処理の進捗 // 複雑な計算タスクの進捗フィードバック - リアルタイムアプリケーション
// チャットルームのメッセージブロードキャスト // リアルタイムデータ監視ダッシュボード // 複数ユーザー協調編集通知 // 株価情報リアルタイム配信 - タスク監視
// バックグラウンドタスク状態監視 // システムリソース監視 // ログリアルタイム表示
ベストプラクティス
1. エラー処理
efw.wsSend関数は例外をスローせず、戻り値でのみ成功を判断(クライアントの切断可能性を考慮)
2. リソースクリーンアップ
// ブロードキャスト停止時のリソースクリーンアップ
context.set("broadcast_status", "false");
context.remove("broadcast_content");
// 受信停止時の状態クリーンアップ
session.set("receive_status", "false");
3. パフォーマンス最適化
// WebSocketメッセージ過多を避けるためメッセージ頻度を制御
java.lang.Thread.sleep(1000); // 毎秒更新
注意事項
1. ブラウザ互換性
- 現代のブラウザはWebSocketをサポート
- ブラウザのサポート状況を確認する必要あり
- フォールバックソリューション(通常モード)を提供
2. 接続管理
- ブラウザ閉鎖時に自動的に接続切断
- ネットワーク異常時にフレームワークが自動再接続(最大10回)
- 接続タイムアウト時間:20秒
3. セキュリティ
wss://セキュアプロトコルの使用を推奨- セキュリティ設定方法はefwイベントと一致
このサンプルは、efwフレームワークのWebSocketモード機能を完全に示し、リアルタイム進捗フィードバックやメッセージブロードキャストなどの高度な特性を含み、リアルタイム通信を必要とする現代的なWebアプリケーションシナリオに適用されます。