Node.js開発ガイドラインの3:コアモジュールの紹介続き

5537 ワード

1 buffer
bufferはノードに提供されるバイナリバイトストリームを処理するツールであり、元のデータはbufferオブジェクトに存在し、stringと相互変換する必要がある場合はstringの符号化を指定する必要がある.現在、Nodeは、ascii、utf 8、utf 16 le、base 64、hexの符号化をサポートしています.binaryは将来ノードに捨てられるかもしれない.
以下にBufferクラスのメソッドと属性を列挙する
new Buffer(size)new Buffer(array)new Buffer(str,[encoding])はbufferを構築する
toString([encoding],[start],[end])bufferを文字列に変換
write(str,[encoding])strをbufferに書き込む
buf[index]位置に基づいてバイトコンテンツにアクセス
byteLength(str,[enc])はstrのバイト長を返す
concat(list)listのbufferを接続して返します
copy(dst,[dst-start],[src-start],[src-end])は、指定したデータを目的のbuffer指定位置にコピーし、buf上の+を使用せずにcopyを使用して速度を上げることをお勧めします.
slice([start],[end])
readUIT 8(offset)bufferから1バイト読み出し、似たようなreadUIT 16 LE readUIT 16 Be、readUIT 32 LE/BE
writeUIT 8(value,offset)はbufferにデータを書き込み、対応するインタフェースはReadシリーズと同じである.
ネットのプログラミングの上で、ホストの序とネットの序の区分があって、LEは小さい端の読み方を採用して、小さい端の機械の上で、ホストの序です.BEは大端読みを採用し,小端機上ではネットワークシーケンスである.
fill(value,[offset],[end])はbuffを充填する
length長さ
 
2 http
HTTPモジュールは複雑で、即ちサーバーサポートがあり、クライアントサポートもある.
2.1 Serverがサポートするコンポーネント
2.1.1 http.Server
このモジュールでは、HTTPサーバを作成するクラスを提供します.
listen(port,[host].[backlog],[callback])
listen(path,[callback])
listen(handle,[callback])
close([callback])
次のイベントの処理をサポートします.
connection function{}TCP接続が確立されるたびにトリガーされます
close function(0{}サービスクローズ時にトリガー
connect function(req,sock,head){}httpリクエストがconnectメソッドである場合にトリガー
クライアントエラー時にトリガー
request function(req,resp){}リクエストが来るたびにトリガーされ、reqはhttpである.ServerRequestインスタンス、respは;http.ServerResponseインスタンス
2.1.2  ServerRequest
HTTPモジュール内部で作成され、Readable Streamインタフェースの実装のために、以下のイベントをサポートします.
data function{}ストリームにデータが表示されたときにトリガーされます.ストリームに符号化chunkが文字列に設定されている場合、buffer
end function(){}ストリーム上でend()を呼び出すとトリガーされます
close function(){}下位接続が閉じたときにトリガーされます.
属性の説明
Method HTTPメソッド、読み取り専用
urlリクエストURL列、最初の行のパスのみ
headersリクエスト中のHTTPヘッダ
connection  net.Socketオブジェクト
メソッドの説明
setEncoding()
pause()/resume()
2.1.3 ServerResponse
Writable Streamインタフェースが実装され、次のイベントがトリガーされます.
close()
メソッドの説明:
writeHead(code,[code string],[headers])
setHeader(name,value)
removeHeader(name)
write(chunk,[encoding])
end([data],[encding])
属性の説明
statusCode
2.2クライアントコンポーネント
2.2.1 http.request(option,callback)
HTTP要求、option={host,hostname,port,lcoalAddress,socketPath,method,path,headers,auth,agent},callback=function(response).httpを返します.ClientRequestオブジェクト.
http.get(option,callback)get要求callback=function(response)をサポートするために使用される
2.2.2 http.ClientRequest
サポートイベント:
response  function(resp) {}
socket  function(socket) {}
connect function(resp,sock,head) {}
サポート方法
write(data,[encoding])
end([data], [encoding])
abort()
setTimeout(timeo,[callback])
setNoDelay()
setSocketKeepAlive()
 
2.2.3 http.ClientResponse
≪イベント|Events|ldap≫
data
end
close
ツールバーの
statusCode
httpVersion
headers
方法
setEncoding()
pause()
resume()
3  dgram/UDP SERVER
dgramモジュールでは、UDPのサーバまたはクライアントを迅速に構築できます.
creatSocket(type,[callback])はUDPのSOCKETを返し、その後の操作はすべてここで行われる.
Socketクラスの場合
bind(port,[address])はsocketバインドポートとアドレスである
send(buf,start,length,port,address,[callback])は、このsocketを介して宛先アドレスにデータを送信する
close()socketを閉じる
address()socketのローカルアドレス,{port,address,protocol}を取得
settTTL(ttl)IPのTTL属性を設定する
setBroadcast(flag)をマルチキャスト属性に設定
setMulticastTTL(ttl)IPマルチキャストTTL属性の設定
setMulticastLoopback(flag)ローカルループ受信マルチキャスト機能の設定またはクリア
addMembership(multiAddr,[interface])は、指定されたインタフェースにマルチキャストグループを追加する
dropMembership(multiaddr,[interface])マルチキャストグループを終了
Socketのイベント:
Message:function(msg,raddr){}UDPがメッセージを受信するとトリガーされる
error:function(err){}異常が発生した場合にトリガー
close:   function() {} 
以下はUDPのサーバーコードで、クライアントはサーバーにhelloを送信して、サーバーはworldに返送します
var udpServer = require('dgram');

var main = function()
{
  socket = udpServer.createSocket('udp4');
  socket.bind(2048);
  //var local = socket.address();

  socket.on('error',function(err){
    console.log('error has happened ',err);
  });

  socket.on('message',function(data,addr){
     console.log('recvfrom addr ',addr); 

     var rbuf  = new Buffer('world','utf-8');
  });

  var rbuf = new Buffer('hello');
  var opt = {ip:'192.168.1.3',port:8080};

  socket.send(data,0,data.length,opt.port,opt.ip);
};

main();

4 Net
NetモジュールはTCPのサーバーとクライアントのモジュールを迅速に構築することができ、具体的なモジュールはここで詳しく紹介しないで、HTTPモジュールと類似している.
5 DNS
このモジュールは比較的簡単で,DNS要求と記録の解析を完了するための一連の関数を導出した.
lookup(domain,'family',callback)   callback(err,address,family) { }
resolve(domain,[rrtype],callback)callback(err,address){}typeは、A,AAAAAA,MX,TXT,PTR,SRV,NS,CNAMEを含む
var dns = require('dns');
var dom = process.argv[2];

/*
dns.lookup(dom,function(err,addr,family){
  console.log('1',err,addr,family);
});
*/

var types = ['A','AAAA','MX','TXT','SRV','PTR','NS','CNAME'];

var handler = function(type)
{
  try{
    dns.resolve(dom,type,function(err,address){
      if(!err)
        console.log(type,address);
      else
        console.log(type,err);
    });
  }catch(exp)
  {
    console.log('unsupport method');
  }
}

types.forEach(handler);