【发布时间】:2021-03-13 18:42:54
【问题描述】:
我使用 Java 和 Socket.IO 连接到我的服务器,但我正在尝试从 android 客户端连接 nodejs 服务器但连接不成功.. (onConnectError) 我尝试了所有解决方案,但我不知道我的问题如何。
我的服务器代码(server.js);
const express = require('express');
const app = express();
const path = require('path');
const server = require('http').createServer(app);
const io = require('socket.io')(server);
const port = process.env.PORT || 3000;
server.listen(port, () => {
console.log('Server listening at port %d', port);
});
app.use(express.static(path.join(__dirname, 'public')));
io.on('connection', (socket) => {
let addedUser = false;
console.log('connection success');
socket.on('example', (data) => {
socket.emit('example', 'example');
console.log('example');
});
socket.on('disconnect', () => {
console.log('disconnecting');
});
});
在 java 方面,我使用互联网和 http 权限进行清单。
<uses-permission android:name="android.permission.INTERNET" />
<application
android:usesCleartextTraffic="true"...
我的java代码;
public class MainActivity extends AppCompatActivity {
private static final String TAG = MainActivity.class.getName();
public static Socket mSocket; {
try {
mSocket = IO.socket("http://192.168.1.35:3000");
} catch (URISyntaxException e) {
throw new RuntimeException(e);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSocket.on(Socket.EVENT_CONNECT_ERROR, onConnectError);
mSocket.on(Socket.EVENT_CONNECT_TIMEOUT, onConnectError);
mSocket.connect();
}
private Emitter.Listener onConnectError = new Emitter.Listener() {
@Override
public void call(Object...args) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "Unable to connect to NodeJS server", Toast.LENGTH_LONG).show();
}
});
}
};
@Override
protected void onDestroy() {
super.onDestroy();
mSocket.disconnect();
mSocket.off(Socket.EVENT_CONNECT_ERROR, onConnectError);
mSocket.off(Socket.EVENT_CONNECT_TIMEOUT, onConnectError);
}
}
【问题讨论】:
标签: javascript java android node.js socket.io