我的应用程序使用 socket.io,无法连接到 node.js 服务器。
服务器 node.js
var app = require('http').createServer()
var io = require('socket.io')(app);
app.listen(1000);
io.on('connection', function (client) {
client.name = client.remoteAddress + ':' + client.remotePort;
console.log(client.name + ' connected!');
client.on('sensorChanged', function (data) {
console.log("HERE");
console.log(data);
});
});
安卓应用:
SocketIO socket = new SocketIO();
try {
socket.connect("http://localhost:1000/", this);
txtView.setText("connected");
} catch (MalformedURLException e) {
e.printStackTrace();
}
socket.emit("sensorChanged", "argument1");
当我连接到服务器时,服务器不会说“socket.name connected”,也不会发出事件“sensorChanged”。问题出在哪里?
在同一 WiFi 上将带有 Socket.IO 的 Android 应用程序与我的服务器连接时,我也遇到了连接问题(尽管事实上当我尝试在浏览器中连接到相同的 URL 时连接有效)。
我在这里找到了解决方案:https://stackoverflow.com/a/50834600/9560885
简而言之,尝试将这一行添加到您的 AndroidManifest.xml 中:
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<application
...
android:usesCleartextTraffic="true"
...>
...
</application>
</manifest>
我是一名优秀的程序员,十分优秀!