无法在android socketio客户端与socketio服务器

时间:2015-10-10 10:49:32

标签: android node.js sockets websocket socket.io

我正在尝试使用Socket.IO开发聊天应用。 我的服务器端是Node.js,安装了express + socket.io库,我的客户端是Android + Web。

我尝试在我的客户端使用所有这些罐子:

  1. ' com.github.nkzawa:socket.io客户端:0.3.0' - 在socket.io网站上可以找到关于制作android到socketio服务器的教程。
  2. ' io.socket:socket.io客户端:0.6.1' - 在nkzawa android chat demo repository中找到了。
  3. ' com.github.nkzawa:socket.io客户端:0.6.0' - 过去的另一个版本对我有用。
  4. 所有这些罐子都没有为android方面工作。 在我的服务器端,我有最新版本--Socket.IO库的1.3.7,我尝试了上面的每个罐子连接到它。

    我也尝试过使用Socket.IO版本1.3.6,它在过去对我有用,并且列表中有第3个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)。
    4. 这是我的服务器端:

      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连接到localhost所以我输入了我的电脑IP地址,它工作。 顺便说一句,我没有想过远程连接,这样我就可以解决问题,并知道问题是与ip地址连接。

1 个答案:

答案 0 :(得分:0)

解决方案到这里来了,我差点错过了它,因为它不在应该的位置。 (提供给OP:Ido Magor):

问题已解决。显然genymotion不需要10.0.3.2 ip来连接到本地主机,所以我输入了我的pc ip地址即可。顺便说一句,我没有考虑过远程连接,那样我就可以解决问题,并且知道问题与ip地址有关。