2017-03-16 7 views
0

enter image description here Ich versuche Socket-Verbindung zwischen note.js und android.This zu erstellen ist node.js QuelleSocket.io FileNotFoundException in android

<script src="/socket.io/socket.io.js"></script> 
<script> 
var socket = io.connect('http://192.168.101.139:8080'); 

socket.emit('initialize', { 
    host: "*******", 
    entity: "*******" 
});  

socket.on('onconnect', function (data) { 
    console.log(data);  
}); 

socket.on('onerror', function (data) { 
    console.log(data);  
}); 

socket.on('device', function (data) { 
    console.log(data);  
}); 

Client-Anzeige! Dies ist android Quelle

try { 
     SocketIO socket = new SocketIO("http://192.168.101.139:8080"); 
     socket.connect(new IOCallback() { 
      @Override 
      public void on(String event, IOAcknowledge ack, Object... args) { 
       if ("echo back".equals(event) && args.length > 0) { 
        Log.d("SocketIO", "" + args[0]); 
       } 
      } 

      @Override 
      public void onMessage(JSONObject json, IOAcknowledge ack) { 
      } 

      @Override 
      public void onMessage(String data, IOAcknowledge ack) { 
      } 

      @Override 
      public void onError(SocketIOException socketIOException) { 
       socketIOException.printStackTrace(); 
      } 

      @Override 
      public void onDisconnect() { 
       Log.e("onDisconnect","onDisconnect"); 

      } 

      @Override 
      public void onConnect() { 
       Log.e("onConnect","onConnect"); 
      } 
     }); 
     socket.emit("echo", "hello"); 
    } catch (MalformedURLException e) { 
     e.printStackTrace(); 
    } 

Wenn ich meine app laufen habe ich FileNotFoundException.

android { 
compileSdkVersion 25 
buildToolsVersion "25.0.2" 
defaultConfig { 
    applicationId "com.example.bekakukhalashvili.unipaypalyertest" 
    minSdkVersion 19 
    targetSdkVersion 25 
    versionCode 1 
    versionName "1.0" 
    testInstrumentationRunner  "android.support.test.runner.AndroidJUnitRunner" 
} 
buildTypes { 
    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
} 

}

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    androidTestCompile('com.android.support.test.espresso:espresso- core:2.2.2', { 
    exclude group: 'com.android.support', module: 'support-annotations' 
}) 
compile 'com.android.support:appcompat-v7:25.1.0' 
testCompile 'junit:junit:4.12' 
compile files('libs/socketio.jar') 

}

I'm using this socket.io library In node.js Seite bin ich socket.io neueste Version 1.7.3 , wie ich mein Problem lösen kann und was wäre mein Problem?

+0

können Sie fügen die Detailfehlermeldung Ihre gradle Post – Remario

+0

, Fehlermeldung auch –

+0

ich log Screenshot @Caspain Caldion – BekaKK

Antwort

0

Sie müssen socket.io an den Node.js-Instanzserver anhängen. Momentan ist Ihre Implementierung eigenständig. Socket.IO ermöglicht die ereignisbasierte Echtzeitkommunikation zwischen einem oder mehreren Clients und einem Server. Es funktioniert auf jeder Plattform, jedem Browser oder Gerät und ist schnell und zuverlässig. Es wird häufig in Analysen, Dokumentenzusammenarbeit, Streaming und Instant Messaging verwendet.

// app.js 
var express = require('express'); 
var app = express(); 
var server = require('http').createServer(app); 
var io = require('socket.io')(server); 

io.on('connection', function(client) { 
console.log('Client connected...'); 

client.on('join', function(data) { 
    console.log(data); 
}); 


app.get('/', function(req, res,next) { 
res.json('txt':'hello') 
}); 

server.listen(your_port); 

auf diese Weise eine URL generiert, sobald eine Verbindung versucht, dann auch socket.io verbindet, so Echtzeit-Kommunikation dann möglich.

+0

was Sie dann tun müssen, ist diese URL öffentlich zu machen, so dass Android auch verbinden kann, weil der lokale Host außerhalb Ihres Adressraums nicht möglich ist. – Remario

+0

um diese Situation zu überwinden entweder hosten Sie Ihre Anwendung online, zB Heroku ist genial, oder verwenden Sie eine Tunneling-Software, die Sie ip ins Internet überträgt eine solche Software ist ngrok. – Remario

+0

Mein Code ist gleich. Wir verwenden lokale IP-Adresse (192.168.101.139: 9090), aber diese Geräte sind in VLAN identisch. – baxri

Verwandte Themen