Nowjsはsocket.ioのコールバック機能を一段とシンプルにした。クライアント側にnowオブジェクト(グローバル)を持ち、サーバ間のeveryone.nowオブジェクトと同期することができる。

Nowjsのセットアップは簡単。
Socket.ioのioオブジェクトの代わりにeveryoneオブジェクトを使用し、listenの代わりにinitalizeメソッドにHTTPサーバを渡す。その他はsocket.ioの場合と同じ。

Nowjsは、まるで空気のようにクライアント・サーバ間で関数を共有する。




Nodeクックブック p.151
古いブラウザはWebSocketをサポートしていない。これらのブラウザに対してWebSocketの双方向通信に似たユーザエクスペリエンスを提供するためには、ブラウザやプラグインに合った方法へのフォールバックが必要。

古いブラウザを新しいサービスに対応させるのは地雷原に足を踏み入れることとほぼ同義。各ブラウザで長時間のテストを行う必要があり、場合によって(IEのActive X htmlfileオブジェクトなど)ベンダー固有のプロトコルについて深い知識を有している必要がある。

socket.ioは、実行中のブラウザが対応している中で一番適切なリアルタイム通信技術を使って、WebSocket、もしくはWebSocketライクな双方向通信APIをサーバとクライアントに提供する。古いブラウザやモバイルブラウザ(iOS Safari、Android)にも対応する。

これに加えて、socket.ioは切断検出・自動再接続や、カスタムイベント、ネームスペース(名前空間)、リモートコールバック実行など、便利な機能を提供する。


カスタムイベント
socket.ioは、messageやconnect、disconnectなど、あらかじめ設定されているイベントの他に、カスタムイベントを設定することができる。emitメソッドを用いてカスタムイベントを発生させ、あらかじめ設定されているイベントと同様にonメソッドで待機しておくことができる。

ネームスペース
socket.ioでは、ネームスペース(名前空間。socket,ioではルートと呼ぶこともある)を設定できる。このネームスペースには、以下のようにクライアントのio.connectにネームスペースを含むURLを渡してアクセスできる。

  io.connect('ws://localhost:8080/ネームスペース');

ネームスペースは。同じコンテクストを共有しつつ複数のスコープを生成することができる。socket.ioでのネームスペースは、1つのWebSocket(もしくはフォールバック先の他の通信手段の)接続を様々な目的のために共有する手段。ネームスペース(名前空間)については、http://ja.wikipedia.org/wiki/名前空間 を参照する。

io.connectを複数回呼び出して、複数のWebSocketネームスペースを定義することができる。しかし、これは複数のWebSocket接続を生成する訳でない。socket.ioは1つの接続を複数の目的のために利用し(もしくは、複数の接続を1つ統合し)、ネームスペースのロジックをサーバで処理する。複数の接続を発生させるより、はるかに負担の少ない方法。

ネームスペースを使用することにより、複数の種類のタスクを1つのsocket.io接続で処理することができる。WebSocketの仕様には、サブプロトコルというこれに似た考え方がある。特定の機能・動作を特定のネームスペースに限定することによってコードが読みやすくなり、多面的なリアルタイムアプリケーションを構築する上での面倒を低減する。




Nodeクックブック p.142
もともとHTTPはリアルタイムに適したプロトコルではなかった。そこで、HTTPにリアルタイム性を持たせるためのクリエイティブで多様な迂回方法が開発され、サーバ・クライアント間の双方向で途切れのない連続したコミュニケーションが実現した。

WebSocketは既存の仕様を利用、もしくは迂回して双方向コミュニケーションを実現するのではなく、双方向コミュニケーションを提供することを目的に新たに策定されたプロトコル。

WebSocketは、HTTPを取り去って永続的にTCPライクな通信を行うことによって、HTTPプロトコルによって発生するオーバーヘッドや機能制限を取り除いている。

クライアントから、WebSocketへのアップグレードを求めるGETリクエストをサーバに送信し、サーバがWebSocketに対応しているかどうかを判断する。ブラウザとサーバが両方ともWebSocketに対応している場合、HTTP接続は取り去られ「アップグレード」される。最近リリースされているブラウザはWebSocketをサポートしている。

WebSocketは新しいプロトコルだが、JavaScriptとNodeの組み合わせを使えば、WebSocketプロトコルを十分に実装できる。JavaScriptでは不足する場合は、C/C++を使ってこの曖昧かつ革命的なプロトコルロジックをモジュールとして実装できる。しかし、いずれの場合でも、自分でプロトコルを実装する必要はない。オープンソースコミュニティがすでにこれらを提供している。

サードパーティモジュールを使用して、NodeとWebSocketのパワフルなコンビネーションの可能性が探れる。



Nodeクックブック p.135
MANPを使います。

MANPのインストール
http://www.mamp.info/en/downloads/index.html
インストールして起動する(MANPのほう。PROでなく。)

WordPressのインストール
http://ja.wordpress.org/
解凍する

Finder➡アプリケーション➡MANP➡htdocsの中に解凍したwordpressコピーして入れる

データベースを作る
MANPの
サーバを起動
スタートページを開く
Webサイトが開く
phpMyAdmin
データベース

データベースを作成するのところに好きな名前を入れて作成

WordPressをインストール
localhost:8888/wordpressにアクセス


設定ファイルを作成する


さあ、始めましょう!


データベース名は、さっき作ったもの
ユーザ名パスワードなど控えておく
送信


インストール実行


サイトのタイトルユーザ名パスワードメールアドレスなど入力し控える
WordPressをインストール


ログイン


ログインする


WordPressの管理画面が開く
サイト名の所をクリックすると、サイト⇔管理画面を行き来することができる。

バージョンの問題かな?

Nodeクックブック p.46
POSTリクエストを送る

Nodeクックブック p.47
multipartファイルアップロードを行う