每次socket请求会重复收到已请求过的数据,比如click第一次一条消息,第二次包含了两条,第三次三条…
正常情况应该是一次click只返回一条
$('#folder_part').on('click',".card.folder",function (){
var current_folder = jQuery.trim($(this).text())
console.log(current_folder)
socket.emit("get_machine_pic_s",machine+"/"+current_folder)
console.log(machine+"/"+current_folder)
console.log(3)
socket.on("get_machine_pic_c",function (data){
console.log(2)
console.log(data)
$('#pic_part').html('')
_.forEach(data,function (val,key){
console.log('get_libiary_img/'+machine+'_'+current_folder+'_'+val)
$('#pic_part').append('<div class="col-1 mb-1"> \n' +
' <div class="card folder">\n' +
' <img src="'+'get_libiary_img/'+machine+'_'+current_folder+'_'+val+'" class="card-img-top" alt="..." style="width: 100%;">\n' +
' <div class="card-body cardcheckbox">\n' +
' <input type="checkbox" value="" id="defaultCheck1" style="zoom:150%">\n' +
' </div>\n' +
' </div>\n' +
' </div>')
})
})
})
目前解决方法是,每次click后关闭流连接,不知道有没有更好的做法
$('#folder_part').on('click',".card.folder",function (){
socket=io(g_ai_server);
var current_folder = jQuery.trim($(this).text())
console.log(current_folder)
socket.emit("get_machine_pic_s",machine+"/"+current_folder)
console.log(machine+"/"+current_folder)
console.log(3)
socket.on("get_machine_pic_c",function (data){
console.log(2)
console.log(data)
$('#pic_part').html('')
_.forEach(data,function (val,key){
console.log('get_libiary_img/'+machine+'_'+current_folder+'_'+val)
$('#pic_part').append('<div class="col-1 mb-1"> \n' +
' <div class="card folder">\n' +
' <img src="'+'get_libiary_img/'+machine+'_'+current_folder+'_'+val+'" class="card-img-top" alt="..." style="width: 100%;">\n' +
' <div class="card-body cardcheckbox">\n' +
' <input type="checkbox" value="" id="defaultCheck1" style="zoom:150%">\n' +
' </div>\n' +
' </div>\n' +
' </div>')
})
socket.close()
})