2015-05-07 48 views
1

我正在爲Android創建離子應用程序,它將通過套接字與簡單的Node.js服務器進行通信。爲此我使用socket.io。我也在客戶端使用Angular.js。文件未找到socket.io ionic

我一直在努力讓連接工作大約一個星期。我不想在這裏添加,我絕不是專家,甚至不習慣JavaScript。我一直在清除問題和錯誤,但是這一個錯誤讓我崩潰了。

無法加載資源:服務器與404(未找到)狀態 http://EXTERNAL_IP:3000/socket.io/?EIO=3&transport=polling&t=1431009277925-0

對我來說,這似乎是客戶端試圖從服務器獲取socket.io文件迴應,但該文件在服務器上不存在。我有socket.io.js在客戶端的文件結構本地文件和HTML鏈接它像這樣:

<script src="js/vendor/socket-io.js"></script> 

我在控制檯收到此錯誤都當我經由實時重載服務器運行,當應用程序部署到我的銀河S5運行android 5.0

我已經嘗試了很多來自本網站和其他人的建議,但無濟於事。也許有我的硬件設置,不想玩的很好?

我一直在關注這個教程: http://www.htmlxprs.com/post/6/creating-a-realtime-image-sharing-app-with-ionic-and-socketio-tutorial

但是,代碼拒絕正常工作。

server.js

var server = require('http').createServer(); 
var io = require('socket.io')(server); 

io.sockets.on('connection', function(socket){ 
    console.log("Socket connected"); 

    socket.on('disconnect', function(){ 
    console.log("Socket disconnected"); 
    }); 

    socket.on('echo', function(msg){ 
    console.log("Recieved msg: " + msg); 
    socket.emit('echo', msg); 
    }) 

}); 

server.listen(3000); 

services.js

angular.module('MyApp.services', []).factory('socketio', function($rootScope) { 
    var socket = io.connect("http://EXTERNAL_IP:3000"); 
    return { 
    on: function (eventName, callback) { 
     socket.on(eventName, function() { 
     var args = arguments; 
     $rootScope.$apply(function() { 
      callback.apply(socket, args); 
     }); 
     }); 
    }, 
    emit: function (eventName, data, callback) { 
     socket.emit(eventName, data, function() { 
     var args = arguments; 
     $rootScope.$apply(function() { 
      if (callback) { 
      callback.apply(socket, args); 
      } 
     }); 
     }) 
    } 
    }; 
}); 

controllers.js

angular.module("MyApp.controllers", []) 
.controller("SocketCtrl", ["$scope", 'socketio', function($scope, socketio){ 
    console.log("attempting to connect"); 
    socketio.on("connect", function(){ 
    console.log("Connected"); 
    }); 
    socketio.on("echo", function(msg){ 
    console.log("Received msg: " + msg); 
    }); 
}]); 

如果任何人有任何指針,我會非常感激。

+0

有同樣的問題,兄弟..看看這個 [你需要使用白名單科爾多瓦插件] [ 1] [1]:http:// stackoverflow。com/questions/30132885/ionic-app-can-connect-cors-enabled-server-with-http – Anmol

回答

0

我有這個問題通過this tutorial工作時,和科爾多瓦-插件白名單解決它:

cordova plugin add cordova-plugin-whitelist 

這略高於<title> index.html中:

<meta http-equiv="Content-Security-Policy" content="default-src 'unsafe-eval' 'self' data: gap: https://ssl.gstatic.com; style-src 'self' 'unsafe-inline'; connect-src http://my-server-name.com"> 

connect-src是關鍵。它「限制了起源,你可以連接(通過XHR,WebSockets的,而EventSource的」,根據this article

+0

我有這個問題,但不是使用''標籤,而是包含'在Android的'config.xml'中(如[docs](https://github.com/apache/cordova-plugin-whitelist)中的狀態) –