2017-03-16 88 views
0

enter image description here我尝试创建note.js和android.This之间套接字连接的node.js源Socket.io FileNotFoundException异常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);  
}); 

客户端显示! 这是Android的源

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

当我跑我的应用我有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 在node.js的身边,我很socket.io最新版本1.7.3 我怎么能解决我的问题,这将是我的问题?

+0

可粘贴详细的错误信息 – Remario

+0

发表您的gradle这个,错误信息以及 –

+0

我上传日志截图@Caspain Caldion – BekaKK

回答

0

您需要将socket.io附加到node.js实例服务器。目前,您的实现是独立的,Socket.IO支持一个或多个客户端与服务器之间的基于事件的实时通信。它适用于每个平台,浏览器或设备,并且快速可靠。它经常用于分析,文档协作,流媒体和即时消息。

// 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); 

这种方式会产生一个URL,只要有任何连接尝试,然后socket.io连接,那么实时通信是可能的。

+0

然后你需要做的是使该URL公开,所以android也可以连接,因为本地主机不可能在你的地址空间之外。 – Remario

+0

为了克服这种情况,无论是在网上举办你的应用程序,例如Heroku真棒,或使用隧道软件,你的ip广播你的互联网,如软件ngrok。 – Remario

+0

我的代码是一样的。我们使用本地ip(192.168.101.139:9090)地址,但这些设备在vlan中是相同的。 – baxri

相关问题