2013-09-04 10 views
6

Używam tej przykładowej aplikacji czatu https://github.com/btford/angular-socket-io-im, która używa socket.io/angular/node do utworzenia podstawowego klienta.AngularJS: aplikacja do czatu z socket.io przez https

Jednak napotykam na problemy, gdy próbuję sprawić, aby działało przez https.

Żadne zdarzenia gniazda nie są przechwytywane na serwerze, więc wiadomości czatu nie są wysyłane do klientów, a użytkownicy nie mogą dołączać do pokoi. Ja też się tego błędu na kliencie w socket.io.js:

Uncaught TypeError: Cannot call method 'onClose' of null 

I utworzeniu serwera expresshttps nasłuchuje na porcie 8000 i zmodyfikowała definicję gniazda do:

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

zarówno w js/services.js aw /bower_components/angular-socket-io/socket.js

Nie do końca wiem, jak to naprawić. Z góry dziękuję!

+0

można spojrzeć na ten adres URL: http: // stackoverflow .pl/questions/15295672/uncaught-typeerror-can-call-method-onclose-of-null –

+0

Ciekawe, czy wymyśliłeś jakieś rozwiązanie? –

+0

Mam dokładnie ten sam problem. – chovy

Odpowiedz

0

Mam aplikację, która robi dokładnie to samo :) korzysta z gniazda io i używa: 8080 musisz się upewnić, że twój certyfikat bezpieczeństwa rejestruje zarówno https://localhost, jak i https://localhost:8000 i został dodany do pęku kluczy, w przeciwnym razie strona będzie załaduj, ale połączenia z gniazdem się nie udają.

0

Tylko kilka zmian wymagane, aby była dostępna poprzez https, choć jest to stara express 2.5 wniosku należy rozważyć patrząc: 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); 
}); 
Powiązane problemy