【问题标题】:Can't connect to local socketIO nodejs server on android无法连接到android上的本地套接字IO节点js服务器
【发布时间】:2019-10-30 09:13:21
【问题描述】:

我已经制作了一个基本的 nodejs 服务器,当用户连接到服务器时,它会在控制台中记录日志。我为此使用套接字 io,因为我想制作一个聊天应用程序。在我的 android 端,我试图创建到这个本地服务器的连接,但是当我尝试并且 socket.connected 保持为假时,我从来没有得到控制台日志。尝试连接时也永远不会出现错误或其他问题

我尝试了一些来自互联网的示例。我有 1 个示例工作删除了我没有使用的所有内容,但它仍然有效。我将该示例中的粘贴复制到我自己的项目中,但仍然无法正常工作。 这是我使用的example

这是我项目的代码 节点JS:

var app = require('express')();
var http = require('http').createServer(app);
var io = require('socket.io')(http);

app.get('/', function(req, res){
  res.sendFile(__dirname + '/index.html');
});

io.on('connection', function(socket){
  console.log('a user connected');
});

http.listen(3000, function(){
  console.log('listening on *:3000');
});

安卓:

public class MainActivity extends Activity {
    private Socket socket;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ChatApplication app = (ChatApplication) getApplication();
        socket = app.getSocket();
        socket.connect();
    }
}

ChatApplication 类:

public class ChatApplication extends Application {
    private Socket mSocket;
    {
        try {
            mSocket = IO.socket("http://192.168.0.109:3000");
        } catch (Exception e) {
            Log.e("Error", e.toString());
        }
    }

    public Socket getSocket() {
        return mSocket;
    }
}

【问题讨论】:

  • 你是用模拟器连接localhost的吗?尝试使用 IP 10.0.2.2
  • 不使用模拟器。我正在使用我自己的安卓设备
  • 连接到套接字时遇到什么错误?

标签: java android node.js socket.io


【解决方案1】:

Android Studio 模拟器通常会阻止本地主机连接,我不确定这是否发生在你的情况下,但它发生在我身上。尝试在 Android Studio 中弹出您的 Logcat 并查看是否可以找到表明 localhost 连接被拒绝的内容。

不确定是否是这样,但您应该检查一下。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-25
    • 1970-01-01
    • 2020-04-28
    • 1970-01-01
    • 1970-01-01
    • 2016-03-10
    • 2019-03-24
    • 2015-04-11
    相关资源
    最近更新 更多