Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Heroku Node.js+;io:部署到Heroku后,我得到一个错误连接_Javascript_Node.js_Sockets_Heroku_Socket.io - Fatal编程技术网

Javascript Heroku Node.js+;io:部署到Heroku后,我得到一个错误连接

Javascript Heroku Node.js+;io:部署到Heroku后,我得到一个错误连接,javascript,node.js,sockets,heroku,socket.io,Javascript,Node.js,Sockets,Heroku,Socket.io,这是我在live node.js heroku应用程序的web控制台中收到的错误消息:polling xhr.js:264 GEThttp://localhost:3000/socket.io/?EIO=3&transport=polling&t=M2MDZUw 网络::错误连接被拒绝 当我在本地运行我的程序时,一切正常,没有任何问题。我已经列出了要侦听环境中任何内容的服务器端口或端口3000(如果没有)。下面是我的相关server.js代码和package.json代码,以及用于连接到服务器的

这是我在live node.js heroku应用程序的web控制台中收到的错误消息:
polling xhr.js:264 GEThttp://localhost:3000/socket.io/?EIO=3&transport=polling&t=M2MDZUw 网络::错误连接被拒绝

当我在本地运行我的程序时,一切正常,没有任何问题。我已经列出了要侦听环境中任何内容的服务器
端口
或端口
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将为您和外界设置端口环境变量,端口为80。

,@MikaS您所说的浏览器连接代码是什么意思?我想他指的是连接到服务器的前端(客户端)的代码。请包括您在客户端使用的
socket.io
版本。@sarthms我已经更新了连接到服务器的前端代码和在客户端使用的socket.io版本。