2013-09-04 11 views
6

Ich führe diese Beispiel-Chat-App https://github.com/btford/angular-socket-io-im, die socket.io/angular/node verwendet, um eine grundlegende im Client zu machen.AngularJS: Chat-App mit socket.io über https

Allerdings bekomme ich Probleme, wenn ich versuche, es über HTTPS arbeiten zu lassen.

Es werden keine Socket-Ereignisse auf dem Server abgefangen, sodass keine Chatnachrichten an Clients gesendet werden und Benutzer keine Räume betreten können. Ich habe auch diesen Fehler auf dem Client in socket.io.js:

Uncaught TypeError: Cannot call method 'onClose' of null 

Ich habe eine expresshttps Server auf Port erstellt 8000 und modifiziert, um die Socket-Definition:

var socket = io.connect('https://localhost:8000',{secure: true, port:8000}); 

sowohl in js/services.js und in /bower_components/angular-socket-io/socket.js

Nicht ganz sicher, wie man das beheben kann. Danke im Voraus!

+0

Können Sie diese URL aussehen: http: // Stackoverflow .com/questions/15295672/uncaught-typeerror-can-call-methode-onclose-of-null –

+0

Interessant, haben Sie noch eine Lösung gefunden? –

+0

Ich habe genau das gleiche Problem. – chovy

Antwort

0

Ich habe eine App, die genau dasselbe macht :) verwendet Socket io und verwendet: 8080 müssen Sie sicherstellen, dass Ihr Sicherheitszertifikat registriert, dass https://localhost und https://localhost:8000 und wurde zu Ihrem Schlüsselbund hinzugefügt, sonst wird die Seite laden, aber Ihre Socket-Verbindungen werden fehlschlagen.

0

Nur wenige Änderungen waren erforderlich, um es über https zur Verfügung zu stellen, obwohl dies eine alte Express 2.5-Anwendung ist, sollten Sie suchen in berücksichtigen: https://github.com/guille/chat-example.git

/** 
* Module dependencies. 
*/ 

var fs = require('fs'); 
var options = { 
    key:fs.readFileSync('key.pem'), 
    cert:fs.readFileSync('cert.pem') 
}; 
var express = require('express'), 
    routes = require('./routes'), 
    socket = require('./routes/socket.js'); 

var app = module.exports = express.createServer(options); 



// Hook Socket.io into Express 
var io = require('socket.io').listen(app); 

// Configuration 

app.configure(function(){ 
    app.set('views', __dirname + '/views'); 
    app.set('view engine', 'jade'); 
    app.set('view options', { 
    layout: false 
    }); 
    app.use(express.bodyParser()); 
    app.use(express.methodOverride()); 
    app.use(express.static(__dirname + '/public')); 
    app.use(app.router); 
}); 

app.configure('development', function(){ 
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); 
}); 

app.configure('production', function(){ 
    app.use(express.errorHandler()); 
}); 

// Routes 

app.get('/', routes.index); 
app.get('/partials/:name', routes.partials); 

// redirect all others to the index (HTML5 history) 
app.get('*', routes.index); 

// Socket.io Communication 

io.sockets.on('connection', socket); 

// Start server 

app.listen(8080, function(){ 
    console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env); 
});