如何为socket.io-client.java构建Android测试代码

时间:2014-10-03 06:08:41

标签: android eclipse maven socket.io

此问题与How to build a Maven Android project in eclipse有关。使用来自@ user714965的建议,我能够在项目中构建代码:https://github.com/nkzawa/socket.io-client.java。现在我正在尝试编译Android测试项目。我创建了一个新的Android项目,并在Java Build Path下指定了socket.io-client项目作为依赖项。但我收到编译错误。 Eclipse无法找到Emitter Class。 这是相关的代码:

public class SocketTask extends AsyncTask<Void, Void, Void> {

    Socket mSocket = null;
    @Override
    protected Void doInBackground(Void... arg0) {
        try {
            Log.d(TAG, "Connecting to server");
            mSocket = IO.socket("<my tested socket.io server address>");
        } catch (URISyntaxException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        mSocket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {

            @Override
            public void call(Object... args) {

                Log.d(TAG, "Connected");
            }

        }).on("event", new Emitter.Listener() {

            @Override
            public void call(Object... args) {
                Log.d(TAG, "Event");
            }

        }).on(Socket.EVENT_DISCONNECT, new Emitter.Listener() {

            @Override
            public void call(Object... args) {
                Log.d(TAG, "Disconnect");
            }

        });

        mSocket.connect();
        return null;
    }
}

2 个答案:

答案 0 :(得分:2)

看起来依赖库未解析。你是否正确安装了所有这些?

  • engine.io-client 0.3.0
  • Java-WebSocket 1.3.0
  • org.json 20090211(默认安装在Android中)

Emitter包含在engine.io-client中。

答案 1 :(得分:0)

我无法回复评论(新的StackOverflow用户),但我已经让这个库通过build.gradle在Android Studio中运行。如果您主要针对Android开发,他们建议您迁移到Android Studio,因为它很快就会成为supported IDE

修改

我可以从nkzawa的这个库连接到一个基于nodejs的socketIO服务器。参考repository

将库添加为gradle依赖项:

compile 'com.github.nkzawa:socket.io-client:0.3.0'

我写了一个类来保存我的套接字:

public class SocketIO{

  Socket sock = null;

  public SocketIO(){
    try{
       sock = IO.socket('<connection string>');

       //Place all events here as per documention
       sock.on(Socket.EVENT_CONNECT, new Emitter.Listener(){
         @Override
         public void call(Object... args){
           System.out.println("connect");
         }
       });

    sock.connect();
    } catch(URISyntaxException e){
      e.printStatckTrace();
    }
  };

  //Helper function for emiting from android
  public void sEmit(String event, JSONObject obj){
    if(socket.connected()){
      sock.emit(event, obj);
    }
  }
}

在我的活动中使用它:

SocketIO socket = new SocketIO();

我在使图书馆工作方面遇到了一些初步的麻烦,但它已经完美无缺,因为这些问题已经解决了问题。 github存储库的一部分非常有用。

希望有所帮助。