Opera’s newest Web browser introduces a new technology platform, Opera Unite, allowing you to stream music or share files, photos and more, right from the browser.

Opera 10.70の最新開発版(10.70 9067)にWebSocketsの機能が実装された。Windows MSIWindows ClassicMacLinux/FreeBSDからそれぞれ対応したバージョンをダウンロードできる。サポートするバージョンは-00(-76)で、このバージョンはChrome 6、Safari 5.02、Firefox 4 betaがサポートしているバージョンと同じもの。

WebSocketsはブラウザで動作するスクリプトとサーバの間で完全な双方向通信を実現するための機能。現在はXMLHttpRequestを使って擬似的に双方向通信を実現しているが、この方法はメッセージごとにTCPコネクションをはる必要がありさらにヘッダが毎回送られることになるなど、効率がいい双方向通信方法とはいいがたい。WebSocketsはこれを改善するもので、低いレイテンシーを実現しサーバとの高速な双方向通信を実現する。

WebSocketsを実装したOpera 10.70 9067

Opera 10.70 9067 / FreeBSD動作例

Opera Core Concerns - WebSockets in OperaにWebSocketsを実装するサンプルコードも掲載されている。WebSocketsを使ってサーバとの接続を確立するコードは次のとおり。

// WebSocketsで接続要求
var ws = new WebSocket('ws://example.org:12345/demo');

接続が確立したら、基本的には次のコードで送受信のハンドリングをおこなう。

ws.onopen = function(e) {
  // 接続完了。send()でメッセージ送信
  this.send('Hello!');
}
ws.onmessage = function(e) {
  // メッセージ受信
  alert(e.data);
}
ws.onclose = function(e) {
  // 接続が切れた場合。明示的に切るにはclose()を使う
  alert('WebSocket closed :-(');
}

ブラウザがWebSocketsをサポートしているかどうかの判断は次のコードで実施する。

if ('WebSocket' in window) {
  // WebSocketsがサポートされている
} else {
  // WebSocketsはサポートされていない
}

OperaにWebSocketsを実装する段階で、現在のWebSocketsの仕様に矛盾点やバグがあることを発見したという。これら問題点はワーキンググループに提出して変更してもらうとしており、WebSocketsの細かい仕様は今後も変わる可能性が高い。