ネットワーク

83. WebSocketが時代を変える

WebSocketとは2011年にRFC6455としてW3Cによって標準化された通信プロトコルである。
一般的にTCP/IP通信ではSocket識別子は呼ばれる識別子によって
通信が行われている。
WebSocketというのはSocket識別子の拡張である。
 
それまでのHTTPプロトコルではHTTPサーバーはHTMLコンテンツなどを送信すれば
直ちに通信を切断してしまうという処理を行っていたが
WebSocketは双方向通信を指向しており明示的な切断をしないかぎり
通信は継続する。

WebSocketでWebフェーシングが変わる !!


つまりこれは5250エミュレータと同じ接続形態をWebで実現したもので
5250エミュレータと同じ動作原理を再現するものである。
今までのHTMLではコンテンツを送信しては終わり(=切断)という
セッション管理とは無縁なステートレスな処理してしていなかった。
しかし5250エミュレータが行っているセッションではつねに通信は持続している
セッション管理が必要なのはご存知のとおりである。
WebSocketはこの通信の持続を実現してくれるという
まさに5250エミュレータにとって救世主のような存在であり
Webフェーシングへの大きな貢献となる。
Webフェーシング製品には次のような効果が期待できる。

・ブラウザのXボタンや戻るボタンへの対応

ブラウザのXボタンや戻るボタンを押しても直ちにIBM iと連動して
対応することができる。
通信が持続しているので切断されればただちにそのことを
検知することができる。
(ただしAutoWebは仮想対話式環境により現在でも連動して対応している。
aXesなどの他社製品ではジョブ残りや画面遷移の不一致が発生する)

・セッション管理が可能

QTEMPや*LDAなどのセッション維持が可能。
通信が持続しているのでセッションはそのまま維持できるのであるる
(ただしAutoWebでは仮想対話式環境により現在でも元のジョブに
復帰するのでQTEMPや*LDAも使用可能。)

・パフォーマンスに優れている

切断後の再接続が繰返し起こることはなく通信は保持されたままなので
全体のパフォーマンスは良くなる。
AutoWebの場合は仮想的な通信の持続が再現されているが
やはり内部での転送があるがこれを解消することができる。

複数セッションの実行が可能となる

IBM ACS、IBM HATS やaXesでは複数セッションで実行することはできない。
(AutoWebは複数セッションの実行も可能。)
これはタブ・ブラウザでは通信用のSocket識別子が複数のタブに対して
1個しかないからである。
しかしWebSocketで通信すると接続は切れないので複数セッションでの
実行が可能となる。
 これはすごい機能アップである。

メッセージ起動が可能になる

ブラウザのGoogle Chromeの機能は目覚しく進化している。
Facebookを使った人であればわかると思うがブラウザ(Chrome)を
起動していなくてもメッセージが送られてくる。
これも実はWebSocketを利用しているからである。
このようにブラウザを起動していなくてもIBM iからユーザーに
SNDBRKMSG によるメッセージを送ることができるようになる。
  5250エミュレータでもできなかったことが可能になるのである。

・Webフェーシングに理想的なプロトコル

以上でご覧のようにWebSocketは5250対話式環境をWebフェーシングで実現するには
理想的な環境と言える。


・WebSocket実現は

ただしWebSocketプロトコルの実現は容易ではない。

サーバー側のプログラムはクライアント(ブラウザ)側からの接続要求があれば
ハンド・シェークというBASIC認証に良く似た認証作業が必要となる。

  これは

①クライアントからのWebSocket-Keyを受取る

②それに暗号キーを付加する

③それをハッシュする

④Base64でさらにエンコードして返信する。

という段型の処理を経て初めて会話が始まる。
このようにWebSocketプロトコルのサポートはかなり大変であるが
理想的なWebフェーシングの実現ためには必要であると考えて
AutoWebへの実装もすることにした。
 IBM iでもこれらを実現するためのAPIが提供されているが
理解するには相当難易度が高い。
各ブラウザのメーカーでもWebSocketを安定稼動させるためには
時間がかかっている。
弊社ではこれらのAPIを利用してWebSocketによる通信に成功した。

WebSocketを使えばaXesやIBM HATS, IBM ACSなどの他社製品でも
Xボタン問題や戻るボタン問題、複数セッション問題も
解決できるはずである。
 5250エミュレータの機能はすべてWebSocketで解決する。
しかしそれを実現するにはサーバー側の大幅な高度な改造が必要である。
海外の開発会社の技術レベルを見ていると
仮らがWebSocketを開発するのは無理であろう。

ともあれWebSocketが時代を変える日がやってくることは
まちがいなさそうである。
それに期待したいものである。