与 Android 和 Socket 的连接失败
Connection with Android and Socket failed
我想在我的 node.js 页面和我的 java 应用程序之间建立连接
我正在尝试 link 这个 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,我认为这是来自配置,但我不知道。
谢谢
首先,检查您的 android 设备是否甚至可以访问 node.js 服务器
打开您设备中的浏览器并请求相同的 url
首先可能是您无法访问该资源
解决方法:
只需在清单中添加:
android:usesCleartextTraffic="true"
我想在我的 node.js 页面和我的 java 应用程序之间建立连接
我正在尝试 link 这个 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,我认为这是来自配置,但我不知道。
谢谢
首先,检查您的 android 设备是否甚至可以访问 node.js 服务器
打开您设备中的浏览器并请求相同的 url
首先可能是您无法访问该资源
解决方法:
只需在清单中添加:
android:usesCleartextTraffic="true"