最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

Heroku Node.js + Socket.io:部署到Heroku后,我得到一个ERR

IT培训 admin 2浏览 0评论

Heroku Node.js + Socket.io:部署到Heroku后,我得到一个ERR

这是我在我的live node.js heroku app上的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');

请记住,当您使用var server = app.listen(process.env.PORT || 3000)时,您没有在Heroku上的端口3000上运行。 Heroku将为您设置PORT环境变量,并为外部世界设置端口为80。

Heroku Node.js + Socket.io:部署到Heroku后,我得到一个ERR

这是我在我的live node.js heroku app上的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');

请记住,当您使用var server = app.listen(process.env.PORT || 3000)时,您没有在Heroku上的端口3000上运行。 Heroku将为您设置PORT环境变量,并为外部世界设置端口为80。

发布评论

评论列表 (0)

  1. 暂无评论