[英]Node.js + Apache - https://localhost:3000/socket.io/ ERR_CONNECTION_REFUSED
[英]Heroku Node.js + Socket.io: After deploying to Heroku, I get a ERR_CONNECTION_REFUSED
這是我在實時node.js heroku應用程序的Web控制台中收到的錯誤消息: polling-xhr.js:264 GET http://localhost:3000/socket.io/?EIO=3&transport=polling&t=M2MDZUw net::ERR_CONNECTION_REFUSED
當我在本地運行程序時,一切正常,沒有任何問題。 我已列出服務器以偵聽PORT
或端口3000
中的環境(如果那里什么都沒有)。 以下是我相關的server.js
代碼和package.json
代碼,以及用於連接到服務器的客戶端代碼。
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"
}
}
連接到服務器的客戶端代碼:
var socket = io.connect("http://localhost:3000");
我正在客戶端使用的socket.io版本是2.0.4。
當你這樣連接
var socket = io.connect("http://localhost:3000");
在客戶端,您實際上是在嘗試通過端口3000連接到您自己的計算機。如果在計算機上啟動服務器,它們甚至可能開始通信。 但是,您想連接到Heroku上托管的服務器。 如果客戶端與服務器位於同一域中,則只需執行
var socket = io();
然后,套接字將在其服務的端口(通常為80)上連接到其自己的域。 它可以在本地和Heroku上運行。 如果要更改端口,可以使用:
var socket = io(':3000');
如果客戶端由套接字服務器之外的其他服務器提供服務,則必須提供整個URL:
var socket = io('https://example.herokuapp.com');
請記住,當您使用var server = app.listen(process.env.PORT || 3000)
您並沒有在Heroku的3000端口上運行。 Heroku將為您設置PORT環境變量,而對於外界,端口為80。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.