套接字连接总是失败
socket connection always failing
我正在编写一个连接到 sails
服务器的应用程序。
此应用程序是用 cordova
、angularJS
和 Ionic
编写的。
当我在浏览器中启动我的应用程序时(使用 ionic serve
),套接字无法连接到服务器。这是我收到的消息:
GET http://localhost:8100/socket.io/?__sails_io_sdk_version=0.11.0&__sails_io_s…sails_io_sdk_language=javascript&EIO=3&transport=polling&t=1443472067762-4 404 (Not Found)
服务器是运行本地的1337端口,我试过把上面的URL改成:
http://localhost:1337/socket.io/?__sails_io_sdk_version=0.11.0&__sails_io_s…sails_io_sdk_language=javascript&EIO=3&transport=polling&t=1443472067762-4
它正在运行。
在我的代码中,我在包含 sails.io.js
之后设置了 URL:
io.sails.url = 'http://localhost:1337';
io.sails.useCORSRouteToGetCookie = false;
为什么要 localhost:8100
而不是 localhost:1337
?
当我在我的移动设备中启动此应用程序时(将 url 设置为 http://192.168.1.10:1337
)它工作正常。
sails.io.js
的版本是0.11.6
,sails
的版本是0.11.0
localhost:8100
不适用于您的移动开发环境。我遇到了同样的问题,将 localhost 更改为您工作站的 ip 解决了问题
我终于找到了解决方案(但很抱歉,我不记得是在哪里找到的:()
问题是 io.sails.url = 'http://localhost:1337';
是在第一个 JS 循环之后执行的,因此 sails 套接字已经加载。 (这是(根据我的理解)因为在某些浏览器中,如果代码在另一个 script
标记中,它将在另一个循环中执行)
为了让它工作,我必须在包含 sails 套接字脚本之前添加以下代码:
var apiHost = 'localhost';
(function (){
var io;
Object.defineProperty(window, 'io', {
get: function (){
return io;
},
set: function (value){
var sails;
io = value;
Object.defineProperty(io, 'sails', {
get: function (){
return sails;
},
set: function (value){
sails = value;
sails.url = 'http://'+apiHost+':1337';
sails.useCORSRouteToGetCookie = false;
}
});
}
});
})();
我正在编写一个连接到 sails
服务器的应用程序。
此应用程序是用 cordova
、angularJS
和 Ionic
编写的。
当我在浏览器中启动我的应用程序时(使用 ionic serve
),套接字无法连接到服务器。这是我收到的消息:
GET http://localhost:8100/socket.io/?__sails_io_sdk_version=0.11.0&__sails_io_s…sails_io_sdk_language=javascript&EIO=3&transport=polling&t=1443472067762-4 404 (Not Found)
服务器是运行本地的1337端口,我试过把上面的URL改成:
http://localhost:1337/socket.io/?__sails_io_sdk_version=0.11.0&__sails_io_s…sails_io_sdk_language=javascript&EIO=3&transport=polling&t=1443472067762-4
它正在运行。
在我的代码中,我在包含 sails.io.js
之后设置了 URL:
io.sails.url = 'http://localhost:1337';
io.sails.useCORSRouteToGetCookie = false;
为什么要 localhost:8100
而不是 localhost:1337
?
当我在我的移动设备中启动此应用程序时(将 url 设置为 http://192.168.1.10:1337
)它工作正常。
sails.io.js
的版本是0.11.6
,sails
的版本是0.11.0
localhost:8100
不适用于您的移动开发环境。我遇到了同样的问题,将 localhost 更改为您工作站的 ip 解决了问题
我终于找到了解决方案(但很抱歉,我不记得是在哪里找到的:()
问题是 io.sails.url = 'http://localhost:1337';
是在第一个 JS 循环之后执行的,因此 sails 套接字已经加载。 (这是(根据我的理解)因为在某些浏览器中,如果代码在另一个 script
标记中,它将在另一个循环中执行)
为了让它工作,我必须在包含 sails 套接字脚本之前添加以下代码:
var apiHost = 'localhost';
(function (){
var io;
Object.defineProperty(window, 'io', {
get: function (){
return io;
},
set: function (value){
var sails;
io = value;
Object.defineProperty(io, 'sails', {
get: function (){
return sails;
},
set: function (value){
sails = value;
sails.url = 'http://'+apiHost+':1337';
sails.useCORSRouteToGetCookie = false;
}
});
}
});
})();