Javascript Cordova将端口添加到Cordova run browser上的外部链接

Javascript Cordova将端口添加到Cordova run browser上的外部链接,javascript,node.js,cordova,socket.io,localhost,Javascript,Node.js,Cordova,Socket.io,Localhost,我正在用node.js、socket.io和cordova构建一个测试聊天应用程序客户端。 执行cordova run browser浏览器将打开。 在cordova聊天客户端应用程序的index.js中,我获得了连接到服务器端socket.io的代码: var socket = io.connect('https://node-socket.io-address/'); socket.on('connect', function() {............. 问题是我收到了这种错误:

我正在用node.js、socket.io和cordova构建一个测试聊天应用程序客户端。 执行
cordova run browser
浏览器将打开。 在cordova聊天客户端应用程序的index.js中,我获得了连接到服务器端socket.io的代码:

var socket = io.connect('https://node-socket.io-address/');
socket.on('connect', function() {.............
问题是我收到了这种错误:

如您所见,链接中添加了一个端口(8000)。当我在android设备上运行应用程序(cordova运行android)时,这个问题不会发生


为什么cordova要向外部链接添加端口?可以在cordova运行浏览器上禁用向外部链接添加端口

不是cordova向URL添加端口,而是socket.io客户端:

未定义端口时,默认为应用程序端口。这可能是socket.io中的一个bug,因为只有当网页和服务器托管在同一个节点上时,它才有意义。您的问题源于这样一个事实:cordova为您的应用程序提供服务(在localhost:8000上),socket.io假定websocket将位于同一端口上


为了避免这种情况,您应该将端口添加到URL或
opt
ions对象。

您在index.html中正确配置了CSP(内容安全策略)吗?实际上,我完全删除了它,因为它导致了另一个错误(拒绝连接到resorce),但事实并非如此;)。为什么在Javascript中的链接中添加了一个端口?在url的末尾添加了一个端口是不正确的。您可以简单地添加默认的https端口:
var socket=io.connect('https://node-socket.io-address:433/');(或其他端口,如果不同)您的配置是什么样子的?e、 g.应用程序集('port',process.env.port | | 8000);process.env.PORT由您运行代码的环境设置。@stdob--是的,我知道-但我必须知道我的heroku测试服务器正在使用哪个端口(不是443,因为chrome开发控制台中存在连接超时错误)这就是我最初的想法——向链接添加端口,但我不知道我的socket.io后端应用程序在Heroku上使用的是什么端口——我尝试了:443(因为我的Heroku url在https上),但它不起作用;)。是否有任何解决方案(可能是在线解决方案)来检查只有URL的端口?您应该使用Heroku的HTTP路由功能来做到这一点。嗯,我不知道如何使用它-但我会检查它。有什么建议吗?无论如何,谢谢你的回答——赏金是你的;)
  this.port = opts.port || (global.location && location.port ?
       location.port :
       (this.secure ? 443 : 80));