2015年04月01日

JavaとJavaScriptで WebSocket通信 を行う方法について

JavaとJavaScriptで WebSocket通信 を行うサンプルプログラムです。
なお、TomcatにWebSocket通信特有の設定は不要です。
また、JavaEEアノテーション(@WebServlet、@ServerEndpoint)を利用するため、web.xmlの設定も不要です。

参考 : Apache/Tomcatを設定する(WebSocket)

実行環境
Java SE : 8u31
Tomcat : 8.0.18
(JSONIC : 1.3.7)
(Commons Lang : 3.3.2)

2015.12.27
もし userProperties にアクセスするためだけに EndpointConfig を利用する場合は、
session.getUserProperties()
にて session から userProperties に直接アクセスできるため、
WebSocket.java の
private EndpointConfig config = null;

WebSocketController.java の
protected static ConcurrentHashMap configPerSession = null;
は不要となります。

【サンプルプログラム】










(コメント抜粋)
-------------------------
WebSocket : AjaxとCometのデメリットを改善したもの.
(
Ajax : ポーリング方式. トラフィック+リソース消費が多くなる. クライアント駆動のみ.
Comet : ロングポーリング方式. トラフィック+リソース消費が多くなる.
)
WebSocketセッション(≠HTTPセッション)毎に本WebSocketインスタンスが生成される.
HTTPセッションに認証情報が含まれなければWebSocketセッションを切断する.
クライアントがWebSocketをクローズした場合は onClose() がコールされる.
サーバがWebSocketをクローズした場合は onClose() がコールされる.
クライアントがhtmlを更新した場合(「F5」キーをクリックするなど)は onClose() → onOpen() がコールされる.
クライアントがロケーションを変更した場合は onClose() がコールされる.
Tomcatを停止した場合は onClose() がコールされる.
想定外エラー(主に不具合)が発生した場合は onError() → onClose() がコールされる.
クライアントがwebブラウザを閉じた場合は onError() がコールされる.
(java.util.concurrent.ExecutionException: java.io.IOException: 確立された接続がホスト コンピューターのソウトウェアによって中止されました。)
クライアントへ新たに通知すべき情報が発生した場合のみ.
なお, DBにアクセスする場合は, DBCPを経由せず, 個別にDBコネクションを取得する(張りっぱなしにする)
→ DBCPコネクション数に加算する必要なし.
同期送信.
非同期送信.
クライアントがWebSocketをクローズした場合は onClose() がコールされる.
サーバがWebSocketをクローズした場合は onClose() がコールされる.
クライアントがhtmlを更新した場合(「F5」キーをクリックするなど)は onClose() がコールされない.※
クライアントがロケーションを変更した場合は onClose() がコールされない.※
Tomcatを停止した場合は onClose() がコールされる.
-------------------------
posted by red at 00:39| Comment(0) | TrackBack(0) | Java | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック