此问题与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;
}
}
答案 0 :(得分:2)
看起来依赖库未解析。你是否正确安装了所有这些?
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存储库的一部分非常有用。
希望有所帮助。