Trong blog socket.io cho biết, đó là trong phiên bản 1.2.1socket.io 1.2.1 Làm thế nào để sửa chữa các sự kiện đôi sau khi kết nối lại
"sửa README để ngăn chặn sự kiện kép trong ví dụ khi kết nối lại [@nkzawa ] "
Tôi đã tải xuống phiên bản 1.2.1 cho máy khách & máy chủ, Nhưng sau khi kết nối lại, nó vẫn gọi sự kiện hai lần. Hoặc tôi nên làm điều gì đó với tệp readme?
Tôi đã thử cách này để kết nối lại và hoạt động nhưng tôi có thể sử dụng nó để sản xuất. Đó là cách cứng nhắc?
socket.disconnect()
// remove socket object
socket = undefined
// connect again
socket = io.connect({'forceNew':true})
Như tôi đã nói có đúng cách hay không có khuyết điểm?
UPDATE, thêm mã
mã phía máy chủ
socket.on('client_emited', function(data){
socketIO.to('this socket id').emit('server_emitted');
})
mã phía khách hàng
var socket;
function connectSocket() {
if (!socket)
socket = io({'forceNew':true});
else
socket.connect();
}
socket.on('connect', function(){
console.log('CONNECTED TO SOCKET.IO SERVER. SENDING "client_emited" EVENT');
socket.emit('client_emited');
});
socket.on('server_emited', function(){
console.log('RECEIVED "server_emited" EVENT');
});
socket.connect(); // here console shows 'CONNECTED TO SOCK...' and 'RECEIVED "server_e...' 1 time
socket.disconnect();
socket.connect(); // here console shows 'CONNECTED TO SOCK...' 2 times and 'RECEIVED "server_e...' 4 times time
và máy chủ nhận "client_emit" sự kiện hai lần
vấn đề issue on github là khả năng trong mã tạo xử lý sự kiện thông điệp của bạn. Bạn cần đảm bảo rằng bạn chỉ bao giờ gọi mã đó là ONCE hoặc bạn đang xóa trình xử lý sự kiện trước khi bắt đầu các mã mới. Vui lòng cho chúng tôi biết mã đó. – jfriend00
cảm ơn bạn đã phản hồi, sẽ hiển thị trong một phút – onar
Thưa tôi, tôi đang sửa mã để dễ hiểu, nó sẽ ở trong vòng 2-3 phút. trong khi bạn có thể viết ý kiến của bạn về phương pháp thứ hai: đầu tiên kết nối, loại bỏ đối tượng socket ren kết nối lại. Tôi có thể sử dụng nó không? – onar