efw WebSocket モード機能サンプル

概要

efwフレームワークはWebSocketモードをサポートし、リアルタイム通信、進捗フィードバック、ブロードキャスト機能を実現します。このサンプルは、WebSocketモードを使用して効率的なクライアント-サーバー通信を行う方法を示し、進捗表示やリアルタイムメッセージブロードキャストを含みます。

コアファイル

  1. WebSocketモードテストメインページ: helloWsMode.jsp
  2. 進捗テスト機能: helloWsMode_progress_test.js
  3. ブロードキャスト開始機能: helloWsMode_broadcast_start.js
  4. ブロードキャスト停止機能: helloWsMode_broadcast_stop.js
  5. ブロードキャスト受信機能: helloWsMode_broadcast_receive.js
  6. ブロードキャスト受信停止機能: 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. ブロードキャストメカニズム原理

ブロードキャストプロセス

  1. ブロードキャスターがメッセージをContextに書き込み
  2. レシーバーが定期的にContextからメッセージを読み取り
  3. 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. ブラウザ互換性

2. 接続管理

3. セキュリティ

このサンプルは、efwフレームワークのWebSocketモード機能を完全に示し、リアルタイム進捗フィードバックやメッセージブロードキャストなどの高度な特性を含み、リアルタイム通信を必要とする現代的なWebアプリケーションシナリオに適用されます。