2017-06-16 31 views
0

我试图连接到我的android应用程序中的node.js服务器。 我可以连接到网络上的服务器只在我的应用程序中没有。 这意味着我猜服务器工作正常。没有在android中与socket.io连接

我用express框架创建了服务器。 这里是我的package.json

{ 
    "name": "rt", 
    "version": "0.0.0", 
    "private": true, 
    "scripts": { 
    "start": "node ./bin/www" 
}, 

"dependencies": { 
    "body-parser": "~1.17.1", 
    "cookie-parser": "~1.4.3", 
    "debug": "~2.6.3", 
    "express": "~4.15.2", 
    "fs": "0.0.1-security", 
    "jade": "~1.11.0", 
    "morgan": "~1.8.1", 
    "oracledb": "^1.13.1", 
    "serve-favicon": "~2.4.2", 
    "socket.io": "^1.7.4" 

}}

,这里是我的客户端代码。

private static final String TAG = "MainActivity"; 

private Socket socket; 
{ 
    try{ 
     socket = IO.socket("http://210.123.255.155:55555"); 
    }catch(Exception e){ 
     Log.e(TAG, e.toString()); 
    } 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    socket.connect(); 
    Log.d(TAG, "" + socket.connected()); 
} 

我试了3个库。

  1. com.github.nkzawa:socket.io客户端:0.3.0
  2. io.socket:socket.io客户端:0.8.3
  3. io.socket:engine.io客户端: 0.8.3

当然,我更改了每个库的mainActivity代码。
三个都不起作用。 我的logcat总是说

D/mainActivity: false 

并没有任何错误。

这个问题的任何想法?

+0

尝试{ 插座= IO.socket( “http://210.123.255.155:55555”) ; socket.connect(); Log.d(TAG,“”+ socket.connected()); (例外e){ } Log.e(TAG,e.toString()); } –

+0

https://socket.io/blog/native-socket-io-and-android/ –

+0

@Divyesh Patel我的代码有什么不同? –

回答

0

让新类并将它命名为你喜欢

public class ChatApplication { 
    private Socket mSocket; 
    { 
     try { 
      mSocket = IO.socket(SERVER_URL); 
     } catch (URISyntaxException e) { 
      throw new RuntimeException(e); 
     } 
    } 

    public Socket getSocket() { 
     return mSocket; 
    } 
} 
在MainActivity

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_menu); 

    ChatApplication app = new ChatApplication(); 
    mSocket = app.getSocket(); 
    mSocket.on(Socket.EVENT_CONNECT_ERROR, onConnectError); 
    mSocket.on(Socket.EVENT_CONNECT_TIMEOUT, onConnectError); 
    mSocket.on(Socket.EVENT_CONNECT, onConnect); 
    mSocket.on(Socket.EVENT_DISCONNECT, onDisconnect); 
    mSocket.connect(); 
} 

public Emitter.Listener onConnect = new Emitter.Listener() { 
    @Override 
    public void call(Object... args) { 
     Log.d(TAG, "Socket Connected!"); 
    } 
}; 

private Emitter.Listener onConnectError = new Emitter.Listener() { 
    @Override 
    public void call(Object... args) { 
     runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 


      } 
     }); 
    } 
}; 
private Emitter.Listener onDisconnect = new Emitter.Listener() { 
    @Override 
    public void call(Object... args) { 
     runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 


      } 
     }); 
    } 
}; 
+1

它的工作原理!谢谢!我猜套接字在活动中不起作用。 –