Socket.io dường như đang kích hoạt nhiều thông điệp theo cấp số nhân, dưới đây là ví dụ tôi đang chạy gây ra sự cố.Socket.io kích hoạt nhiều sự kiện
phía Chủ đầu tư:
<html>
<head>
<script type="text/javascript" src="../../js/jquery191.min.js"></script>
<script type="text/javascript" src="http://192.168.1.2:8887/socket.io/socket.io.js"></script>
</head>
<body>
<button>Click Me!</button>
<script type="text/javascript">
$(document).ready(function(){
var socket = io.connect('http://192.168.1.2:8887');
$("button").click(function(){
console.log("Emitting test_parent");
socket.emit('test_parent');
socket.on('test_parent_server', function(data){
console.log("Handling test_parent_server");
console.log("Emitting test_child");
socket.emit('test_child');
socket.on('test_child_server', function(ing){
console.log("Handling test_child_server");
});
});
});
});
</script>
</body>
</html>
Server side:
socket.on("test_parent", function(){
socket.emit("test_parent_server", { data : " " });
});
socket.on("test_child", function(){
socket.emit("test_child_server", { data : " " });
});
Đối với một số lý do mỗi khi nút được click các sự kiện bị sa thải nhiều lần, tăng theo cấp số nhân. Tôi đã cố gắng xác định những gì heck đang xảy ra nhưng không may mắn gỡ lỗi nó hoặc tìm kiếm trực tuyến.
Cảm ơn bạn! Tôi đã không nhận ra rằng socket.io sẽ nối các callback như thế, bây giờ tôi có cấu trúc theo cách bạn đã làm nó! –
@JosephShering, Nó không phải là socket.io cụ thể. Đó là cách hầu hết các hệ thống sự kiện hoạt động. Tôi rất vui vì nó đã hoạt động. Nếu bạn hài lòng với câu trả lời của tôi, vui lòng đánh dấu câu trả lời là đã được chấp nhận. –