Ich habe eine echtzeitfunktion in meiner website, die ein neues fenster auf socket.io ereignis geöffnet von der serverseite (PHP/Laravel 5.1). Das Problem ist, wenn ein Benutzer auf meiner Website angemeldet und öffnete es in mehr als einer Registerkarte/Fenster - die neue window.open Feuer mehrere Zeit, jemand weiß, wie kann ich es verhindern? mein Code sieht wie folgt aus:window.open auf echtzeit ereignis (using socket.io) wenn meine website in mehr als einem fenster öffnen
die Socket-Listener:
socket.on('message', function (data) {
data = JSON.parse(data);
if(typeof data.data !== "undefined"){
lead_data = data.data;
}else{
lead_data = data;
}
if(typeof lead_data !== "undefined" && (lead_data.event_name == "new_call" || lead_data.event_name == "new_unsaved_call")){
if(lead_data.user_id == uid){
window.App.openCallWindow(data);
}
}
});
und die openCallWindow
Funktion:
openCallWindow : function(data){
void(0);
var lead_id = '';
if(data && data.lead){
lead_id = data.lead._id;
window.open('/leads/callLead/'+lead_id,'new_lead'+Math.floor((Math.random()*999)+1), "height=800,width=1200");
}else if(typeof data.phone !== "undefined"){
window.open('/leads/callLead/?phone='+data.phone,'new_lead'+Math.floor((Math.random()*999)+1), "height=800,width=1200");
}else{
window.open('/leads/callLead/'+lead_id,'new_lead'+Math.floor((Math.random()*999)+1), "height=800,width=1200");
}
},
danke sehr viel :)
Vielen Dank für die Antwort Kumpel, aber ich muss immer noch das neue Fenster öffnen, auch wenn die w indow ist nicht aktiv. Gibt es eine Möglichkeit, zu validieren, wie viele Fenster meiner Website geöffnet sind, oder zu überprüfen, ob das Ereignis bereits von einem anderen Ort ausgelöst wurde? – benjah
Ich weiß nicht, ob das möglich ist, aber Sie könnten die IP-Adresse oder den Benutzernamen/userid von socket.io verwenden, um die "Nachricht" nur an eine Verbindung pro IP/Benutzer zu senden. Die IP befindet sich in "socket.handshake.address" und Sie können ein Objekt wie "messageSend [ip/userName] = true/false;" erstellen und dann vor dem Senden abfragen, ob diese IP/Benutzer die Nachricht bereits erhalten haben. – txxt
Ich bin ziemlich neu bei socket.io, können Sie bitte ein Codebeispiel geben? sollte ich es in den Socket-Verbindungshandler hinzufügen? – benjah