2015-09-28 132 views
1

我在写一个连接到sails服务器的应用程序。套接字连接总是失败

本申请书采用cordova,angularJSIonic

当我在浏览器中启动我的应用程序(使用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上本地运行:

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后的网址已被列入:

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

回答

1

我终于找到了解决这个问题(但我很抱歉,我不记得在那里我发现它:()

的问题是, (这是(从我的理解),因为在某些浏览器中,如果代码在另一个script标记中,它将在另一个周期中执行)

要到(第一个JS周期执行完毕,使其工作我必须在添加此代码之前,我包括帆脚套脚本:

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; 
          } 
         }); 
        } 
       }); 
      })(); 
+0

感谢张贴这个。我尝试过实现它,仍然无法连接。使用'sails.useCORSRouteToGetCookie = false;'它反复尝试连接失败。如果没有,它会失败一次'无法加载资源:服务器响应状态为404(未找到)http:// MY_SAILS_IP:1337/__ getcookie'有没有想法? –

+0

@BradW我真的不知道,但这很奇怪,它不能解决您的问题。在我的情况下,我将所有js文件包含在head标签中。首先,我将这段代码(我的答案中的代码)作为内联代码添加,然后包括我的所有库,并且它工作正常 –

+0

@fabian您是否加载了socket.io-client/socket.io.js?如果是这样,何时? –

1

localhost:8100不会工作。我面临着同样的问题和不断变化的localhost工作站的IP解决

+0

其实在我的手机上它正在工作,因为通过更改URL:io.sails.url正在工作,但不在桌面上 –

+0

是的,对于桌面(模拟器),您必须使用本地服务器IP,而不是本地主机 – Muntasim

+0

但在桌面我使用localhost:1337(这是我的服务器的主机),但它实际上使用localhost:8100这是我的应用程序服务的服务器(使用Ionic) –