2015-12-21 39 views
0

我一直在使用nodejs和socket.io在聊天應用程序中工作。我已經有了一個Android客戶端,可以在這個模式下完美工作。我開始使用express.io而不是分別使用socket.io表示。除了我的Android客戶端之外,一切運作良好。我在Android中使用https://github.com/socketio/socket.io-client-java套接字客戶端,但我的應用程序從未連接到我的套接字服務器。Express.io和Android

我收到以下錯誤: io.socket.engineio.client.EngineIOException:服務器錯誤

有誰知道一些關於這個問題?

服務器端配置:

var express = require('express.io'); 
    var path = require('path'); 
    var logger = require('morgan'); 
    var bodyParser = require('body-parser'); 
    var multer = require('multer'); 

    var app = express(); 

    app.http().io() 


    app.io.route('storeClientInfo', function(req) { 

     req.io.join(req.io.request.data.customId); 

    }); 

    app.io.route('enviar_room', function(req) { 

     app.io.room(req.params.correo).broadcast('new visitor'); 

    }); 

    // Start the server 

    app.set('port', process.env.PORT || 3000); 

     var server = app.listen(app.get('port'), function() { 
     console.log('Express server listening on port ' +          server.address().port); 
     }); 

Android的一面:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    try { 

     mSocket = IO.socket(LoginActivity.URL_HOST); 
     mSocket.on(Socket.EVENT_CONNECT_ERROR, onConnectError); 
     mSocket.on("new visitor",onNuevoMensaje); 
    } 
    catch(Exception ex) 
    { 
     ex.printStackTrace(); 
    } 
    } 

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

     Log.d("SocketMsg: ", args[0].toString()); 

     for (Object o : args) { 
      Log.i("IO " + Socket.EVENT_CONNECT_ERROR, o.toString()); 
     } 

     runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
       Toast.makeText(getApplicationContext(), 
         "CONNECT ERROR", Toast.LENGTH_LONG).show(); 


      } 
     }); 
    } 
}; 

目前,我已經有我的服務器上運行的Angularjs網頁版。問題是,在Android我總是收到Socket.EVENT_CONNECT_ERROR。

+0

聽起來像網絡問題。你能上傳你的Android代碼以及logcat中的更多錯誤嗎? –

+0

你可以嘗試確保服務器可以使用socket.io至少瀏覽http:// HOST:PORT/socket.io/socket.io.js,如果它現在工作正常意味着它的設置工作不正常, PLZ分享你如何設置你的服務器端代碼 – msoliman

+0

主機:PORT/socket.io/socket.io.js正在工作,即時通訊使用我的Angular網絡應用程序。 –

回答

0

經過兩天的測試,我發現問題在於Express.io包含一個socket.io版本0.9.6。 socket.io-client-java庫(https://github.com/socketio/socket.io-client-java)支持socket.io 1.x或更高版本。我手動將Express.io上的socket.io版本更改爲1.3.7版本。我只需修改Express庫中的部分代碼。