javascript - Cordova 将端口添加到 cordova run 浏览器上的外部链接

标签 javascript node.js cordova socket.io localhost

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

var socket = io.connect('https://node-socket.io-address/');
socket.on('connect', function() {.............

问题是我收到这种错误:

enter image description here

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

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

最佳答案

这不是 cordova 将端口添加到您的 URL,它是 socket.io 客户端,here :

  this.port = opts.port || (global.location && location.port ?
       location.port :
       (this.secure ? 443 : 80));

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

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

关于javascript - Cordova 将端口添加到 cordova run 浏览器上的外部链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35314142/

相关文章:

javascript - 是否可以向 html 选择框添加水平滚动条?

javascript - React 中如何模拟组件

cordova - Ionic 3 音量键事件捕获

node.js - 是否可以在 lrange 中使用多个键?

node.js - Angular 2捕获401响应

ios - Cordova/Phonegap Media 在 iOS iPhone 6 设备上没有声音

javascript - PhoneGap 应用程序的 XMLHttpRequest POST 数据丢失

javascript - 使用 node-sqlite3 将变量绑定(bind)到 SQL 语句

javascript - 使 mobx 数据存储在应用程序重新启动时持久化( react native )

javascript - 使用 Node.js 请求 (req) 作为 WeakMap 的键是否安全