2016-09-02 2 views
0

Ich versuche, Echtzeit-Anwendung mit node.js und socket.io zu machen. Wie ich sehen kann, kann der Server sehen, wenn ein neuer Benutzer eine Verbindung herstellt, aber keine Informationen an die Client-Seite oder etwas zurückgeben kann. Dies ist, was ich auf Client-Seite habe:socket.io kann nicht mit Fehlern umgehen

<script src="<?= base_url('assets/js/socket.io.js') ?>"></script> 
<script> 
    var socket; 
    socket = io('http://***.***.***.***:3030', {query: "key=key"}); 

    socket.on('connect', function (data) { 
     console.log('Client side successfully connected with APP.'); 
    }); 

    socket.on('error', function (err) { 
     console.log('Error: ' + err); 
    }); 
</script> 

und dies ist die Server-Seite:

var app = require("express")(); 
var http = require("http").createServer(app); 
var io = require("socket.io")(http); 

http.listen(3030, function() { 
    globals.debug('Server is running on port: 3030', 'success'); 
}); 

io.set('authorization', function (handshakeData, accept) { 
    var domain = handshakeData.headers.referer.replace('http://', '').replace('https://', '').split(/[/?#]/)[0]; 

    if ('www.****.com' == domain) { 
     globals.debug('New user connected', 'warning'); 
    } else { 
     globals.debug('Bad site authentication data, chat will be disabled.', 'danger'); 
     return accept('Bad site authentication data, chat will be disabled.', false); 
    } 
}); 

io.use(function (sock, next) { 
    var handshakeData = sock.request; 
    var userToken = handshakeData._query.key; 

    console.log('The user ' + sock.id + ' has connected'); 
    next(null, true); 
}); 

und wenn jemand auf Website kommt erwarte ich in Konsolenausgabe „Neuer Benutzer verbunden, um zu sehen "und ich sehe es: screen shot und der Benutzer sollte in der Browser-Konsole Ausgabe sehen:" Client-Seite erfolgreich mit APP verbunden. " aber ich zeige es nicht. Ich habe auch versucht, Daten an Benutzer zu senden, aber es funktioniert auch nicht. Ich kann keine Fehler oder etwas sehen. Dies ist nicht das erste Mal, dass ich mit Sockets arbeite, aber das erste Mal mit solchen Problemen konfrontiert. Vielleicht gibt es irgendwelche Fehlerberichtsmethoden, um Fehler oder etwas zu behandeln? Ich kann auch nicht ausgegeben auf io.use(....) Methode siehe

+0

Können Sie die auth-Schicht versuchen Entfernen Sie den auth-get hit zu sehen, aber nicht die „der Benutzer __ angeschlossen“ ist es woeful Dokumentation auf das, was die „connect“ Ereignis clientseitige feuert, Es ist möglich, dass es auth zuerst übergeben muss. – broguinn

+0

ja das funktioniert, aber wie auth auch zu halten? –

+1

Oh mein Schlechter, ich muss 'accept (null, true)' hinzufügen nachdem ich bestätigt habe, dass alles in Ordnung ist! –

Antwort

1

Die Lösung ist „OK“ Zeichen nur nach der Authentifizierung zu übergeben Sie die nächste Methode zu tun:

io.set (‚Genehmigung‘, Funktion (handshakeData, akzeptieren) { var domain = handshakeData.headers.referer.replace ('http: //', '') .replace ('https: //', '') .split (/ [/? #] /) [0] ;?.

if ('www.****.com' == domain) { 
    globals.debug('New user connected', 'warning'); 
    accept(null, true); 
} else { 
    globals.debug('Bad site authentication data, chat will be disabled.', 'danger'); 
    return accept('Bad site authentication data, chat will be disabled.', false); 
} 

}); 
Verwandte Themen