socket.ioのイベント一覧
昨日からnode.js+socket.ioでチャットアプリを作り出しました。
簡単に作れて楽しいのだけどサーバ側のeventで"message"しか受け取れないのかしらと疑問に思ってどうせならついでにsocket.ioのドキュメントをちょっと見てみました。ドキュメントは4/14日時点のgithubにあがっているものです。
socket.ioって?
シンプルなHTTP Socketインタフェースです。簡単にリアルタイム接続処理をかけるようになります。socket.ioはリアルタイムプロトコルをwebsocketAPIみたいに利用できるのでそのあたりを気にしないとこがいいんだよ。
サポートプロトコル
サポートブラウザ
- Safari 4
- Google Chrome 5
- Internet Explorer 6
- Internet Explorer 7
- Internet Explorer 8
- iPhone Safari
- iPad Safari
- Firefox 3
- Firefox 4 (Minefield)
- Opera 10.61
その他
- ActionScriptがプロキシの配下で動かない事がよく知られています。すなわちそれはCONNECT HTTPメソッド経由でアクセスできないことを意味します。このあたりは別の方法を考えようと思っています。
- 接続に成功した場合、そのプロトコルはcookieに保存され、次回アクセス時に利用されます。
注意
もし別ドメインからswfファイルを受け取る場合 WEB_SOCKET_SWF_LOCATION は別の不安定バージョンを利用してください。
Documentation
io.Socket
new io.Sokcet(host, [options]);
options:
- secure
false
https使うときはtrueなんだとおもう
- port
Current port or 80
socket.ioサーバが利用するポート(default: document.location.port)
- resource
socket.io
どんなHTTPサーバでもリアルタイムでないリクエストを受け付けたままsocketリクエストを受けれるようになります。
- transports
['websocket', 'flashsocket', 'htmlfile', 'xhr-multipart', 'xhr-polling', 'jsonp-polling']
プロトコルリスト。
- transportOptions
{ someTransport: { someOption: true }, ... }
プロトコルごとにオプションを設定可能
- rememberTransport
true
接続したプロトコルを覚えておくかどうか(cookieを利用)
- connectTimeout
5000
millisecでかく
- tryTransportsOnConnectTimeout
true
connectTimeoutが発生したときに別プロトコルで接続するかどうか
- reconnect
true
接続が切れたときに再度接続しにいくかどうか
- reconnectionDelay
500
サーバに再度接続しにいくときにまつ時間
- maxReconnectionAttempts
10
接続の試行回数
Properties:
- options
デフォルトのオプションを見る。
- connected
サーバと接続されていたかどうか(true/false)
- connecting
サーバと接続されているかどうか(true/false)
- transport
どのプロトコルで接続しているか
Methods:
- connect
接続を実施
- send(message)
文字列データをサーバに送る
- disconnect
接続をきる
- on(event, λ)
listenerイベントの登録
- removeEvent(event, λ)
eventからλ処理を削除する
Events:
- connect
接続が確立されたとき
- connecting(transport_type)
引数で指定したtranport_typeでの接続に失敗したとき
- connect_failed
connectTimeoutによって接続失敗されたときに発生するイベント。
tryTransportsOnConnectTimeoutを設定していた場合全てのtransportに失敗した場合のみ発生する。
- message(message)
サーバからリクエストがきたとき
- disconnect
接続が閉じられたとき
- reconnect(transport_type, reconnectionAttemps)
接続が再び確立されたとき
- reconnecting(reconnectionDelay, reconnectionAttemps)
- reconnection_failed
。。。
messageの中でがんばれってことか。まぁそうかという気もしてきた。