2011-06-08 11 views
6

socket.ioの接続で追加のパラメータを送信するにはどうすればよいですか?したがって、クライアントが接続すると、追加の情報が送信され、受信側のサーバ側にはsocket.ioの追加パラメータ

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

接続時にクライアントが「init」メッセージを送信しないようにしましょう。 – Raynos

+1

できません。イベントハンドラのシグネチャはユーザ定義ではなく、ライブラリによって定義されます。 – davin

答えて

13

となります。最初に、最初の接続(すべての追加情報を含む)でメッセージを送信する独自​​のSocketクライアントを作成します。

// 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); 

次に、サーバー側では、特別なメッセージを受信するようにソケットを変更し、イベントが発生したときにイベントを起動します。

// 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 
} 

これは、私が書いたパッケージのセッション処理をSocket.IOにリンクするために使用した手法です。

関連する問題