无法在安卓socketio客户端和socketio服务器之间建立连接。

3
我正在尝试使用Socket.IO开发聊天应用程序。 我的服务器端是Node.js,安装了express + socket.io库,而客户端是Android + Web。
我尝试在客户端使用以下所有jar包:
1. 'com.github.nkzawa:socket.io-client:0.3.0' - 在socket.io网站上找到的教程,介绍如何将android连接到socketio服务器。 2. 'io.socket:socket.io-client:0.6.1' - 在nkzawa android chat demo存储库中找到的。 3. 'com.github.nkzawa:socket.io-client:0.6.0' - 过去的另一个版本,对我有效。
所有这些jar包都无法在android端工作。 在我的服务器端,我有最新版本的Socket.IO库-1.3.7,并尝试使用上述每个jar包进行连接。
我还尝试使用Socket.IO版本1.3.6,该版本在过去与列表中的第三个jar包一起使用可以正常工作。

我尝试在Android端将url更改为http://10.0.2.2:3000http://192.168.1.100:3000,分别在这些版本的jar包中进行测试...

注意事项 -

  1. 注意 - 我正在使用Android中的Genymotion。
  2. 我拥有INTERNET_PERMISSION。
  3. 服务器端的socket.io在Web浏览器(本地PC)上运行正常。

这是我的服务器端:

var app = require('express')();
var bodyParser = require('body-parser');
var http = require('http').Server(app);
var io = require('socket.io')(http);

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended:false}));

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

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

这是我的客户端:

 private Socket mSocket;
    {
        try {
            mSocket = IO.socket("http://10.0.3.2:3000");
        } catch (URISyntaxException e) {
            throw new RuntimeException(e);
        }
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mSocket.connect();
        //setupActivity();
    }

我已经到了一无所知的地步,不知道下一步该怎么做,所以现在任何帮助都会对我有所帮助 :) 谢谢
编辑 - 问题已解决。显然,genymotion不需要10.0.3.2 IP地址连接到本地主机,所以我输入了我的PC IP地址,它起作用了。 顺便说一句,我没有考虑远程连接,这样我就可以消除问题,并知道问题是连接IP地址的问题。

请在下方标记解决方案为正确,以便其他人看到已经解决。 - Urasquirrel
1个回答

0
解决方案在这里,我差点错过了它,因为它不在应该在的地方。(感谢原作者:Ido Magor):
问题已经解决。显然,genymotion不需要10.0.3.2 IP地址连接到本地主机,所以我输入了我的PC IP地址,它就可以工作了。顺便说一下,我没有考虑远程连接,那样我就可以消除问题并知道问题是与IP地址连接有关。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接