Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.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-Socket.IO客户端始终连接到本地主机_Javascript_Node.js_Heroku_Socket.io - Fatal编程技术网

Javascript Heroku-Socket.IO客户端始终连接到本地主机

Javascript Heroku-Socket.IO客户端始终连接到本地主机,javascript,node.js,heroku,socket.io,Javascript,Node.js,Heroku,Socket.io,我正在尝试将Node.js、Express.js、Socket.IO和基于React的应用程序部署到Heroku上 但是在客户端,socket.io-client似乎总是连接到localhost,即使我在连接时从未指定过localhost 我在浏览器控制台中遇到此错误: bundle.js:208 Mixed Content: The page at 'https://test.herokuapp.com/#/test?_k=v7l28t' was loaded over HTTPS, but

我正在尝试将Node.js、Express.js、Socket.IO和基于React的应用程序部署到Heroku上

但是在客户端,socket.io-client似乎总是连接到localhost,即使我在连接时从未指定过localhost

我在浏览器控制台中遇到此错误:

bundle.js:208 Mixed Content: The page at 'https://test.herokuapp.com/#/test?_k=v7l28t' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://localhost:3000/socket.io/?EIO=3&transport=polling&t=LLobEYP'. This request has been blocked; the content must be served over HTTPS.
如果我尝试在http上打开它,则会出现连接被拒绝错误:

bundle.js:208 GET http://localhost:3000/socket.io/?EIO=3&transport=polling&t=LLpAsLm net::ERR_CONNECTION_REFUSED
以下是我的服务器套接字的外观:

var express = require('express');
var app = express();
var server = http.createServer(app);
var io = require('socket.io')(server);
server.listen(port);
io.on('connection', function(socket) {
  socket.on('news', function(message) {
    console.log("Responding with news");
    io.sockets.emit('news', 'news');
  });
});
以下是客户端代码:

var io = require('socket.io-client');
var socket = io.connect();
socket.on('connect', function() {
  console.log('connected to server');
  socket.emit('news', 'news');
});
加上package.json:

{
  "name": "test-socket",
  "version": "1.0.0",
  "private": true,
  "scripts": {
    "dev-server": "nodemon ./bin/www",
    "dev-client": "watchify -t [ envify --NOVE_ENV development ] -t [ babelify --presets [ react es2015 ] ] public/javascripts/index.js -o public/javascripts/build/bundle.js -v",
    "dev": "concurrently \"npm run dev-server\" \"npm run dev-client\"",
    "build": "browserify -t [ envify --NOVE_ENV production ] -t [ babelify --presets [ react es2015 ] ] -g uglifyify public/javascripts/index.js -o public/javascripts/build/bundle.js",
    "start": "node ./bin/www"
  },
  "dependencies": {
    "body-parser": "~1.13.2",
    "cookie-parser": "~1.3.5",
    "debug": "~2.2.0",
    "express": "~4.13.1",
    "fakeredis": "^1.0.3",
    "jade": "~1.11.0",
    "lodash": "^4.11.1",
    "material-ui": "^0.15.0-beta.2",
    "mongoose": "^4.5.0",
    "morgan": "~1.6.1",
    "passport": "^0.3.2",
    "passport-http": "^0.3.0",
    "passport-local": "^1.0.0",
    "react": "^15.0.1",
    "react-bootstrap": "^0.28.5",
    "react-dom": "^15.0.1",
    "react-router": "^2.4.1",
    "react-tap-event-plugin": "^1.0.0",
    "redis": "^2.6.2",
    "serve-favicon": "~2.3.0",
    "socket.io": "^1.4.6",
    "socket.io-client": "^1.4.6",
    "whatwg-fetch": "^0.11.0"
  },
  "devDependencies": {
    "babel-preset-es2015": "^6.6.0",
    "babel-preset-react": "^6.5.0",
    "babelify": "^7.2.0",
    "browserify": "^13.0.0",
    "concurrently": "^2.1.0",
    "envify": "^3.4.0",
    "nodemon": "^1.9.2",
    "uglifyify": "^3.0.1",
    "watchify": "^3.7.0"
  },
  "description": "",
  "main": "app.js",
  "author": "Harsha Bhat",
  "license": "ISC"
}

如果我在这里做错了什么,请告诉我。感谢您的帮助:)

您的网站在https上运行,但套接字在http上运行。为初始连接使用安全的URL,即使用http://“而不是
”https://“


或者打开您的网站(不带ssl)

如果我使用以下客户端,这对我有效:

const socketURL =
  process.env.NODE_ENV === 'production'
    ? window.location.hostname
    : 'https://localhost:5000';

const socket = io.connect(socketURL, {secure: true});

你能把你的
包放上去吗?我相信可能有一个脚本调用localhost serversure。添加了相同的。打开站点的http版本,
http://test.herokuapp.com
即使套接字尝试连接本地主机,我也会收到一个连接被拒绝的错误:bundle.js:208 get net::ERR\u connection\u refused即使我在http上打开它,它仍然指向localhost:3000,我收到这个错误:net::ERR\u connection\u refused您可能在某个地方得到了硬编码的url,检查项目中是否有任何其他io.connect调用。至少,为了测试目的,要显式地编写url
const socketURL =
  process.env.NODE_ENV === 'production'
    ? window.location.hostname
    : 'https://localhost:5000';

const socket = io.connect(socketURL, {secure: true});