Socket.io + NodeJS-funktioniert nicht auf Heroku

Bin ich dabei eine API, und es ist auf Heroku. Aber ich habe einige Probleme mit der Buchse.io nur auf die heroku Seite, wenn ich es testen in lokale geht alles in Ordnung. Die API ist völlig unabhängig von der frontend -, so sind Sie in einem anderen domains (und eine andere hosts). Das problem ist, dass auf die Produktion, ich verstehe das nicht gelingt, verbinden Sie die buchsen...

Habe ich einige Fragen, die alle, die über die Steckdose.io-Konfiguration auf heroku. Ich weiß, dass es einige Beiträge mit einigen Informationen darüber, aber die Beiträge habe ich gefunden, es wurde mit alten Versionen von sockets.io oder alte Versionen von heroku (heroku scheint sich das geändert hat websockets Sachen der Vergangenheit. Juli):

  • Ich weiß nicht, wenn ich muss etwas aktivieren, bevor Sie ausgeführt Buchse.io auf heroku. Ich lese einige Beiträge darüber, aber alles scheint alt zu sein... ich habe versucht, zu aktivieren Websockets mit: $ heroku labs:enable websockets aber die Antwort, die ich bekam war: ! No such feature: websockets.

  • Muss ich einen port festzulegen, oder Heroku ist eine automatische port für das?

  • Brauche ich zwei Anschlüsse? Um zu hören die POST/GET/PUT/DELETE und den anderen an die buchsen?

app.js

    var express = require('express');
    var app = module.exports = express();
    var port = process.env.PORT || 5000;
    var port_s = 3000;
    var server = require('http').createServer(express);
    ...
    app.listen(port);
    server.listen(port_s);

    require('./config/socket-io')(app, server, secret);
    app.post('/user', routes.users.register);
    ...

socket-io.js

module.exports = function(app, server, secret) {
    var clients = {};
    console.log("initiating sockets...");
    var sio = require('socket.io').listen(server);

    sio.sockets.on('connection', function (socket) {
        clients[socket.id] = socket;
        console.log("...new connection: "+socket.client.id);
        socket.emit('identification', { data : socket.client.id });

        socket.on('newShoutOut', function(data) {
            var receptor    = data.idTo;
            var emiter      = socket.client.id;
            //console.log("...new shout out from " +emiter+ " to "+receptor);
            var elem = findElement(sio.sockets['sockets'], 'id', receptor);
            sio.sockets.sockets[elem].emit('privateShoutout',{ data : data.data, from : emiter });
        });

        socket.on('disconnect', function() {
            //console.log("..."+socket.client.id + " disconnected");
        });
    });
};

function findElement(arr, propName, propValue) {
    for (var i=0; i < arr.length; i++) {
        if (arr[i].id === propValue)
            return i;
    };
}

Ich wiederhole, alles funktioniert auf localhost. Ich habe versucht, die API auf localhost:5000 und der client-app auf localhost:80 und alle Steckdosen funktionieren.

Danke.

  • könnte gehen Sie zur Befehlszeile, und geben Sie heroku logs und lassen Sie mich wissen, was Sie sehen?
InformationsquelleAutor newpatriks | 2014-07-29
Schreibe einen Kommentar