Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Socket.IO 1.0の変更点・内部的な話

Socket.IO 1.0の変更点・内部的な話

socket.io 1.0と0.9の比較や内部実装について。 node学園#13

Naoyuki Kanezawa

June 23, 2014
Tweet

More Decks by Naoyuki Kanezawa

Other Decks in Programming

Transcript

  1. // expressのmiddlewareを使ってcookieをパースする var cookieParser = require(‘cookie-parser’)(‘my secret’); io.use(function(socket, next) {

    var req = socket.request; var res = {}; // ダミーのレスポンス cookieParser(req, res, next); }); io.on(‘connection’, function(socket) { console.log(socket.request.cookies); });
  2. // クライアント var socket = io(‘http://localhost:3000/foo’); // サーバ io.use(function(socket, next)

    { console.log(‘first’); // 先に実行される next(); }); io.of(‘/foo’).use(function(socket, next) { console.log(‘second’); // 後で実行される next(); });
  3. examples // オブジェクトに埋め込み socket.emit(‘event’, {data: new ArrayBuffer(10)}); // 複数バイナリ socket.emit(‘event’,

    [binary1, binary2]); // acknowledge socket.on(‘event’, function(callback) { callback(new Buffer([1, 2, 3])); });
  4. バイナリ送信できるトランスポート • ◯ websocket • ◯ XMLHttpRequest Level 2 •

    ☓ 古い仕様のwebsocket • ☓ XMLHttpRequest • ☓ JSONP ※バイナリ送信をサポートしないトランスポートでも、base64エンコードされた文字列 として透過的にデータを送受信できる。