2011-06-08 50 views
6

Làm cách nào để gửi thông số bổ sung với kết nối trong socket.io? Vì vậy, khi khách hàng kết nối, họ gửi thông tin bổ sung và phía máy chủ được nhận làTham số bổ sung với socket.io

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

Tại sao không yêu cầu khách hàng gửi thông báo "" init "' khi họ kết nối? – Raynos

+1

Bạn không thể. Chữ ký của các trình xử lý sự kiện không do người dùng định nghĩa, thư viện định nghĩa chúng. – davin

Trả lời

13

Đây là một mẹo nhỏ nên hoạt động. Trước tiên, bạn tạo ứng dụng Socket của riêng mình để gửi một thông báo về kết nối đầu tiên (chứa tất cả thông tin bổ sung của bạn).

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

Sau đó, ở phía máy chủ, bạn sửa đổi ổ cắm để nghe tin nhắn đặc biệt và kích hoạt sự kiện khi có.

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

Đây là kỹ thuật tôi đã sử dụng để liên kết xử lý phiên của tôi với Socket.IO cho gói tôi đã viết.

Các vấn đề liên quan