0

我想在我的 node.js 页面和我的 java 应用程序之间创建一个连接

我正在尝试链接这个 node.js 页面,这个页面:

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.get('/', function(req, res){
    console.log("Load ...");
    res.sendFile(__dirname+"/index.html");
});
io.on('connection', function(socket){
    console.log('one user connected : ' + socket.id);
});
http.listen(3000 ,function(){
    console.log('Start server on port 3000');
});

使用此 java 代码:

我的socke,这个页面只是告诉我是否有人加入了socket,该页面托管在http://192.168.0.12:3000/上:

private Socket socket;
{
    try{
        socket = IO.socket("http://192.168.0.12:3000");
    } catch (URISyntaxException e) {
        e.printStackTrace();
    }
}

我的听众,在这里我只是在测试我得到什么类型的错误:

    socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(getApplicationContext(), "Connect", Toast.LENGTH_SHORT).show();
                }
            });
        }
    });
    socket.on(Socket.EVENT_CONNECT_ERROR, new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(getApplicationContext(), "Errors", Toast.LENGTH_SHORT).show();
                }
            });
        }
    });
    socket.on(Socket.EVENT_CONNECT_TIMEOUT, new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(getApplicationContext(), "Timeout", Toast.LENGTH_SHORT).show();
                }
            });
        }
    });
    socket.connect();

我总是有同样的错误 Socket.EVENT_CONNECT_ERROR。我的 node.js 在网络上工作,但我的代码 node.js 适用于互联网浏览器,但不适用于 android,我认为这是从配置开始的,但我不知道。

谢谢

4

2 回答 2

0

首先,检查你的安卓设备是否可以访问 node.js 服务器

转到您设备中的浏览器并请求相同url

可能你一开始就无法访问资源

于 2018-10-21T21:21:36.147 回答
0

解决方案:

只需在清单中添加:

 android:usesCleartextTraffic="true"
于 2018-10-22T10:24:50.880 回答