2011-06-08 31 views
6

Soket.io'daki bağlantıyla nasıl ek parametreler gönderebilirim? Yani bir istemci bağlandığında, bunlar ek bilgi göndermek vesocket.io ile ekstra params

io.on('connection', function(client, param1, param2, param3) { 
    // app code 
} 
+1

İstemciye neden bağlantı kurduklarında bir '' init ''mesajı göndermiyorsunuz? – Raynos

+1

Yapamazsınız. Olay işleyicilerinin imzası kullanıcı tanımlı değil, kütüphane bunları tanımlar. – davin

cevap

13

İşte çalışmalıdır biraz hüner gibi sunucu tarafı o alınır. Öncelikle, ilk bağlantıda (tüm ek bilgilerinizi içerecek şekilde) bir mesaj gönderen kendi Socket istemcisini yaratırsınız.

// Client side 

io.MySocket = function(your_info, host, options){ 
    io.Socket.apply(this, [host, options]); 
    this.on('connect', function(){ 
    this.send({__special:your_info}); 
    }); 
}; 
io.util.inherit(io.MySocket, io.Socket); 

var my_info = {a:"ping"} 
var socket = io.MySocket(my_info); 

Sonra sunucu tarafında, özel mesajla dinlemek ve zaman yok bir olay ateşlemesi için soket değiştirin.

// Server side 

var io = require('socket.io').listen(app); 
io.on('connection', function(client){ 
    client.on('message', function(message){ 
    if (message.__special) { 
     io.emit('myconnection', client, message.__special); 
    } 
    }); 
}); 

io.on('myconnection', function(client, my_info) { 
    // Do your thing here 
    client.on('message', ...); // etc etc 
} 

Bu, oturum yazmamın yazdığım bir paket için Socket.IO'ya bağlandığım tekniktir.