JavaScript Advent Calendar 2011 (Node.js/WebSocketsコース) の 13 日目の記事です. Node といえば非同期プログラミングですが,そのスタイルは大雑把にわけて 2 種類あります.一つ目は fs モジュールなどで使われているコールバック関数のスタイル. fs.readFile(path, function(err, content) { if (err) { // エラー時の処理 return; } // 成功時の処理 });このスタイルは,何らかの要求に対する結果を一発で受け取る (要求と結果が 1 対 1) 場合に使われます.そして,コールバック関数の第1引数でエラーの有無が通知されます.エラーがなければ null,エラーがあった場合は Error オブジェクトというのが原則のような気がしますが,undefined が渡されたりする
JavaScript Advent Calendar 2011 (Node.js/WebSocketsコース)の16日目です。 @koichikさんの13日目の記事にも書かれているように、Node.jsにて非同期処理を管理する方法には以下の2種類があります 非同期処理の呼び出し時にコールバック関数を与える。処理が終わったらエラーの有無と、結果が通知される。 EventEmitterに対してon/onceでEventListenerをセットして非同期処理を実行する。非同期処理の実行によって発生したイベントやエラーはリスナーに通知される。 後者の説明はkoichikさんの記事にお任せして、この記事は前者を扱うライブラリcaolan/asyncについてみていきたいと思います。 caolan/asyncって? https://github.com/caolan/async で公開されているフロー制
たまたま新環境にNode.js入れてたらv0.7.0がリリースされてたのに気がついたので、勢いで新機能を試してみた。 V8のバージョンが上がったとかもあるけど多分一番の目玉はIsolates(マルチスレッド)のサポートかな、と思う。開発ブランチでは他にもDomainsという機能も実装中らしいと聞いてたがそれはまだv0.7.0では使えないようだ。 Isolatesの使い方がドキュメントの方には載ってなかったのでソースをisolateとかthreadとかで探してみたところ、どうやらchild_processモジュールのspawnやforkのオプションに thread:true を渡してやればマルチスレッドを使ってくれるっぽいことが分かった。 シングルスレッドと非同期I/Oでシンプル&ハイパフォーマンスが売りのNodeだが、よく「マルチコアが使い切れない、重たいCPU処理したら固まるじゃんプギャ
Source Code: lib/http.js This module, containing both a client and server, can be imported via require('node:http') (CommonJS) or import * as http from 'node:http' (ES module). The HTTP interfaces in Node.js are designed to support many features of the protocol which have been traditionally difficult to use. In particular, large, possibly chunk-encoded, messages. The interface is careful to never
サーバー側でJavaScriptを動かすnode.jsは、予期せぬexceptionが発生すると、簡単に停止してしまう。まぁ、これはJavaScriptだから仕方のないことなのだが、ライブラリなども発展途上のnode.jsを本番環境で使う人にとっては痛いところである。 そこで、Linuxなどで昔ながらの djb tools の一つであるdaemontoolsを使う人などがいるのだろうが、せっかくなのでnodeで稼働するforeverをつかってみる。 個人的にはdaemontoolsよりも状態把握がしやすいので、foreverをしばらく使おうと考えている。 そもそも何するものなの? JavaScriptをはじめとしたスクリプト言語全般にいえることですが、サーバサイドで常駐稼働させると、何かの拍子に停止して落ちてしまうことがしばしばあります。 そんなとき、落ちてしまったときに自動的に立ち上げ直
(この記事は Node.js アドベントカレンダー不参加記事です) チャットサーバー的な使い方とか意外とみんな興味なくて、普通のウェブアプリケーションなどをかく、という用途にちょっと node.js がつかえたらいいのにな、とおもっている人がおおいようにかんじています。Node.js が人気なのは、v8 をうまくパッケージングしているのが node.js ぐらいで、そして v8 をうまくパッケージングするのが結構めんどくさいから、というところが大きいのです。ぶっちゃけ node.js が〜 とさわいでる人のうち8割は I/O multiplexing だからとかそういう理由で支持しているわけではなかったりするのです(偏見)。 さて、普通の web application のようなものを書こうとしたときに Node.js って基本シングルスレッドだし、なんかうっかり重い処理したときにどうした
できたよー! 遊び方 次のURLから、twitterアカウントでログインする。 http://w-mtlab.com:4444/ 対応(確認)ブラウザはGoogleChrome Firefox4.0以上。 同時に10人ログイン程度まではテスト済。それより増えるとわからん。 矢印キー or WASD 移動 数字キーでスキル設定 1 攻撃 2 強攻撃 3 回復 4 範囲攻撃 青が自分、赤が敵、緑は他のプレイヤー それぞれにクールタイムが設定してあって、一定時間立つと実行する。具体的には、スキルを選択して敵に近づけば、それを定期実行する。ディアブロ式のネトゲやったことある人なら直感的にわかると思う。 敵を一定数倒すとレベルが上がる。ゲーム的な部分は、あまり詰めてない。クライアントではまだ可視化してないイベントがたくさんある。 死んだらリロードで復活する。 セーブデータはアカウント単位で保存されて
node.js のホスティングサービスまとめ - 自分の感受性くらいで既にまとめられているけれど、自分が使ってみた幾つかのものをまとめてみる。 Joyent no.de https://no.de/ WebSocketは使えるはずなのだけど、いまSocket.IOアプリを手元のMacで試してみている限りではChrome 14.0.835.202とFirefox 7.0.1ではSocket.IOのwebsocket transportにチャレンジして失敗して結局xhr-pollingになってしまう。Safari 5.1.1では問題無くwebsocketで動く。 gitで管理してremoteリポジトリにpushすることでデプロイ。sshログインしての操作も可能。 細かい設定値などはnpm configを使うのが良さげ。 SmartMachinesは以前(8月頃)は3つ以上つくれなかったのだけど
Node.js in Production - Felix Geisendörfer discusses his experience running Node.js in production environments over time with Transloadit, moving from early failures to a stable architecture running over 2TB of data without bugs. He covers lessons learned around hosting, deployment, monitoring, debugging, testing and load balancing Node.js applications at scale.Read less
How does it work? Inputs watch log files for changes, send new log messages to the server, which broadcasts to web clients. Log messages are tagged with stream and source information based on user configuration. log.io has no persistence layer. File inputs are informed of file changes via inotify, and log messages hop from input to server to web client via TCP and socket.io, respectively. Simple T
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く