2016-11-22 3 views
0

Hallo Ich benutze websockets auf meinem node.js Server, um WebRTC Verbindungen zu etablieren. Aber wenn ich die Verbindung der Knoten Server-Konsole zu beenden, gibt mir die folgende Fehlermeldung:Closing websocket Verbindungsfehler

 conn.otherName = null; 
        ^

TypeError: Cannot set property 'otherName' of undefined 

Anderer Name ist der Name des anderen Peer und I'ts in der Verbindung wie folgt setted: Fall „Angebot“: // für ex. UserA möchte UserB anrufen console.log ("Sendeangebot an:", data.name);

 //if UserB exists then send him offer details 
     var conn = users[data.name]; 

     if(conn != null) { 
      //setting that UserA connected with UserB 
      connection.otherName = data.name; 

      sendTo(conn, { 
       type: "offer", 
       offer: data.offer, 
       name: connection.name 
      }); 
     } 

     break; 

    case "answer": 
     console.log("Sending answer to: ", data.name); 
     //for ex. UserB answers UserA 
     var conn = users[data.name]; 

     if(conn != null) { 
      connection.otherName = data.name; 
      sendTo(conn, { 
       type: "answer", 
       answer: data.answer 
      }); 
     } 

Danach bin Schließen ich die Verbindung wie folgt aus:

connection.on("close", function() { 

    if(connection.name) { 
    delete users[connection.name]; 

    if(connection.otherName) { 
     console.log("Disconnecting from ", connection.otherName); 
     var conn = users[connection.otherName]; 
     conn.otherName = null; 

     if(conn != null) { 
      sendTo(conn, { 
       type: "leave" 
      }); 
     } 
    } 
    } 
}); 

Wie kann ich es ändern, um die Verbindung schließen zu können, ohne mein Knoten Server abstürzt?

Antwort

0

es aus Brechen stoppen ist ganz einfach mit einigen defensiven Code, diese

var conn = users[connection.otherName]; 
conn.otherName = null; 

zu diesem Es

if (connection.otherName) { 
    var conn = users[connection.otherName]; 
    if (conn) 
     conn.otherName = null; 

    if(conn != null) { 
// The connection is closed, trying to send at this point isn't a good idea 
      sendTo(conn, { 
       type: "leave" 
      }); 
     } 
    } 

ändern geht nicht, warum Benutzer [connection.otherName] nicht definiert ist Zurückkehren (das ist eine Übung für dich), aber es wird aufhören zu stürzen

+0

Funktioniert immer noch nicht einmal mit:/ –

+0

Was meinst du mit nicht funktioniert? – Mikkel

+0

Es stürzt trotzdem ab, das Problem ist, dass wenn ich zweimal auf die Schaltfläche klicke, die die "Schließen" Nachricht sendet. Da es bereits geschlossen wurde, gibt es undefined zurück, so dass es abstürzt und das gleiche Fehlerprotokoll anzeigt. –