自部門内の管理用でイントラのWebを作り、管理してますが
特定のページにアクセスが集中していて重くなっています。
理由は表示データの更新の為です。
以前からWebSocketを使うとリアルな通信が出来そうだな~
とは思っていたのですが、なにせ素人ですから、出来るかどうか
Googleで検索しながらサンプルを調べていました。
ここで学んだ内容を整理しておきます。
あくまでも自分で理解した内容のメモですから
間違った事を書いてたらご容赦を。
1、nodejs
WebSocktのサーバーは色々と出ていますのでどれが良いのか?
で自分が必要な機能と経験とを考えつつ(悩みつつ)試したのが
nodejs です。
意外にも簡単に動作しました。
動いたけど理解には及ばず、Googleでまた調べ直し
⇒ Nodeビギナーズブック
これを見ました。(買ってはいませんが)
どう見ても、本のコマーシャル?(Goolgleの検索で何度も見かけてました)
と思いつつ、下へスクロールしてみると(結構長いページです)
解説が始まりました。(~~)
これ見ながら半日、サンプルを動作させて、nodejsに対する頭のモヤモヤが
スッキリしてきました。
このサンプルは多分、Linux環境で書かれているのと、1箇所だけサンプルを保存する
ファイル名が抜けてました。
記述の前後関係で気がつきますが、メモしときます。
以下のサンプルソースを保存する時 requestHandlers.js です。
「本当のリクエストハンドラへのルーティング
さて、仕事に戻るとしましょう。HTTPサーバとリクエストルータは、・・・・・
・・・・・・・モジュールのメソッドとしてエクスポートしましょう:
function start() {
console.log("Request handler 'start' was called.");
}
function upload() {
console.log("Request handler 'upload' was called.");
}
exports.start = start;
exports.upload = upload;
こうして、ルータにルーティングする先のものを渡すことで・・・・」
更に下へ行くと(ページの真ん中より少し下)以下のサンプル(「」で括った)で
exec("ls -lah", ここの ls が linux の記述ですね。
私はWindowsしか使ってないので dir とか tree を入れて試しました。
exec("dir", function (error, stdout, stderr) {
content = stdout;
});
「もう一度startリクエストハンドラを使います。 下記を反映するよう、修正して下さい
(requestHandlers.jsファイル):
var exec = require("child_process").exec;
function start() {
console.log("Request handler 'start' was called.");
var content = "empty";
exec("ls -lah", function (error, stdout, stderr) {
content = stdout;
});
return content;
}
function upload() {
console.log("Request handler 'upload' was called.");
return "Hello Upload";
}
exports.start = start;
exports.upload = upload;
おわかりのとおり、新しいNode.jsモジュールchild_processを使っています。」
以上。
この他に
PHPでWebSocketサーバー作ってみた
と
[Windows]node.js(0.8)+express(3.0)+ejs+socket.ioを使ったサンプルアプリを動かすまでのメモ
☆このサンプルでIE-8も socket-io 経由で接続されます。
が凄く参考になりましたのでメモで残します。
0 件のコメント:
コメントを投稿