WebSocketが一番速いアプリケーションサーバはどれだ?Tomcat、Jetty、Socket.IO/Node.js性能比較(1/3 ページ)

双方向通信を実現するHTML5関連技術WebSocketを実装した3つのアプリケーションサーバの実装の違い・性能などを徹底検証する。

» 2013年06月04日 18時00分 公開
[高橋栄二,NTTソフトウェア 技術開発センター OSS基盤技術部門]

はじめに


 201210Windows 8Internet ExplorerIE10HTML520132Windows 7IE 10HTML5

 HTML5WebHTMLCSSWebSocketWebSocketWeb

 WebSocketITWebSocket


 WebSocket使

WebSocketWeb


 3JavaApache TomcatJettyJavaScript使Node.jsNode.jsWebSocketSocket.IO

 使


 

 各サーバともに頻繁にバージョンアップが行われており、検証を行った時点で利用していた上記のバージョンはすでに古くなっています。その上、Jettyはメジャーバージョンアップ、Node.jsも0.8系から0.10系に最新版が切り替わり、以下の比較結果が、そのまま今のバージョンでも当てはまらないこともあるかと思いますが、その点はご了承ください。

 クライアントについては、筆者がJavaでの開発に親しんでいたこともあり、上記のライブラリを利用して作成しています。Tomcat/Jettyは同じクライアントプログラムを使っていますが、Socket.IOは専用のクライアントを作っています。

各サーバでの実装状況

 WebSocketはプロトコル仕様とAPI仕様が別々に作成されており、それぞれ別の団体が仕様策定を行っています。API仕様も、もともとはクライアント側の仕様のみ策定が進められていましたが、サーバ側はJavaのAPI仕様が2012年からJCP(Java Community Process)で策定が進められてきました。

 プロトコルは、すでに多くの版を重ねており、版が進むにつれ機能の追加やセキュリティ対応などがされていますので、クライアントとサーバで対応するプロトコルバージョンに違いがあると利用できません。

 まずは、このプロトコルについて各サーバの実装状況を解説します。

プロトコルへの対応状況

 WebSocketのプロトコルは、IETF(Internet Engineering Task Force)で策定が行われています。クライアントとサーバのハンドシェイクでは、プロトコルヘッダ中の「Sec-WebSocket-Version」を利用して、双方で利用可能なバージョンの確認を行います。この「Sec-WebSocket-Version」はhybi-04(draft-ietf-hybi-theWebSocketprotocol-04)以降設定されるようになっています。

 この「Sec-WebSocket-Version」とプロトコルドラフトバージョンの対応は以下の通りです。

Sec-WebSocket-Version hybi-XX
4 hybi-04
5 hybi-05
6 hybi-06
7 hybi-07
8 hybi-08 - hybi-12
13 hybi-13 - RFC6455

1Tomcat

 TomcatWebSocket20127.0.27RFC6455Web使

2Jetty

 JettyWebSocket20097.0.1WebSocket

3Node.jsSocket.IO

 Node.jsSocket.IOhybi-07hybi-16hybi-16Sec-WebSocket-Version13


 WebRFC6455Web

API


 APIAPIJavaAPIAPIJSR356JavaTM API for WebSocket2013422Final Approval Ballot

 APITomcatTomcat 8Jetty201338Jetty 9

 JSR356WebSocket

 
       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。