2017-12-27 33 views
0

Dies ist die Fehlermeldung, die ich immer bin in der Webkonsole auf meiner Live-node.js Heroku App: polling-xhr.js:264 GET http://localhost:3000/socket.io/?EIO=3&transport=polling&t=M2MDZUw net::ERR_CONNECTION_REFUSEDHeroku Node.js + Socket.io: Nach dem Heroku Bereitstellung, erhalte ich eine ERR_CONNECTION_REFUSED

Wenn ich laufen Mein Programm lokal, alles funktioniert ohne Probleme. Ich habe den Server aufgelistet, um zu hören, was in der Umgebung ist PORT oder Port 3000, wenn dort nichts ist. Unten ist mein relevanter server.js Code und package.json Code, sowie der Client-Code, der für die Verbindung mit dem Server verwendet wird.

server.js

var express = require("express"); 
var socket = require("socket.io"); 

var app = express(); 
var server = app.listen(process.env.PORT || 3000) 

package.json

{ 
    "name": "testProject", 
    "version": "1.0.0", 
    "description": "test project using node.js + sockets.io", 
    "main": "server.js", 
    "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1" 
    }, 
    "keywords": [ 
    "sockets", 
    "p5", 
    "node" 
    ], 
    "author": "henry zhu", 
    "license": "ISC", 
    "dependencies": { 
    "express": "^4.16.2", 
    "socket.io": "^2.0.4" 
    } 
} 

Client-seitige Code-Server verbinden:

var socket = io.connect("http://localhost:3000"); 

Die Version von socket.io Ich benutze Client-Seite ist 2.0.4.

+0

https://stackoverflow.com/questions/27393705/socketio-get-http-localhost3000-socket-io-eio-3transport- pollingt-1418187, https://github.com/socketio/socket.io-client/issues/1097, https://github.com/socketio/socket.io-client/issues/1053 – wrangler

+0

@MikaS Was meinst du? nach Verbindungscode für den Browser? –

+0

Ich denke, er bezieht sich auf den Code am Frontend (Client-Seite), der mit dem Server verbunden ist. Bitte geben Sie an, welche Version von 'socket.io' Sie auf der Client-Seite verwenden. – SarathMS

Antwort

0

Wenn Sie diese

var socket = io.connect("http://localhost:3000"); 

auf der Client-Seite verbinden Sie tatsächlich versuchen, werden auf den eigenen Rechner auf Port 3000. anschließen Wenn Sie den Server auf Ihrem Computer anwerfen sie sogar zu kommunizieren beginnen könnten. Sie möchten jedoch eine Verbindung zu dem Server herstellen, den Sie auf Heroku hosten. Wenn der Kunde auf der gleichen Domäne wie der Server bedient wird, können Sie einfach tun

var socket = io(); 

Die Buchse wird dann auf seine eigene Domain auf dem Port verbinden Sie es an (in der Regel 80) serviert wird. Es funktioniert sowohl lokal als auch auf Heroku. Wenn Sie Port ändern möchten, können Sie:

var socket = io(':3000'); 

Wenn der Kunde von einem anderen Server als der Socket-Server bedient wird, wird Sie die ganze URL zu liefern haben:

var socket = io('https://example.herokuapp.com'); 

Denken Sie daran, dass, wenn Sie verwenden var server = app.listen(process.env.PORT || 3000) Sie laufen nicht auf Port 3000 auf Heroku. Heroku wird die PORT-Umgebungsvariable für Sie festlegen und für die Außenwelt ist der Port 80.

Verwandte Themen