我使用sails v0.11.2并尝试使用https://github.com/socketio/socket.io-client-java
连接到网络套接字我的问题是当我从我的服务器注销时(我使用passport.js)正确触发了disconnect事件,但是在此事件追加后我无法重新连接。
这是我的代码:
socket = IO.socket(Constants.LOCAL_URL + "?__sails_io_sdk_version=0.11.0");
socket.io().on(Manager.EVENT_TRANSPORT, new Emitter.Listener()
{
@Override
public void call(Object... args)
{
Transport transport = (Transport) args[0];
transport.on(Transport.EVENT_REQUEST_HEADERS, new Emitter.Listener()
{
@Override
public void call(Object... args)
{
@SuppressWarnings("unchecked")
Map<String, List<String>> headers = (Map<String, List<String>>) args[0];
// modify request headers
headers.put("Cookie", Arrays.asList(COOKIE));
}
});
}
});
socket.on(Socket.EVENT_ERROR, new Emitter.Listener()
{
@Override
public void call(Object... args)
{
if (listener != null)
{
listener.onError();
}
Log.e("test", "ERROR");
}
}).on(Socket.EVENT_CONNECT, new Emitter.Listener()
{
@Override
public void call(Object... args)
{
listener.onConnect();
}
}).on(Socket.EVENT_DISCONNECT, new Emitter.Listener()
{
@Override
public void call(Object... args)
{
listener.onDisconnect();
}
}).on(Socket.EVENT_CONNECT_ERROR, new Emitter.Listener()
{
@Override
public void call(Object... args)
{
if (listener != null)
{
listener.onConnectError();
}
}
}).on(Socket.EVENT_CONNECT_TIMEOUT, new Emitter.Listener()
{
@Override
public void call(Object... args)
{
if (listener != null)
{
listener.onConnectError();
}
}
}).on(Socket.EVENT_RECONNECT_ERROR, new Emitter.Listener()
{
@Override
public void call(Object... args)
{
if (listener != null)
{
listener.onConnectError();
}
}
}).on(Socket.EVENT_RECONNECT_FAILED, new Emitter.Listener()
{
@Override
public void call(Object... args)
{
if (listener != null)
{
listener.onConnectError();
}
}
});
socket.connect();
当我在断开连接事件后尝试重新连接时,这是我的倾听者:
SocketIOManager.SocketConnexionListener socketConnexionListener = new SocketIOManager.SocketConnexionListener()
{
@Override
public void onConnect()
{
Log.e("test", "CONNECT");
}
@Override
public void onError()
{
Log.e("test", "ERROR");
}
@Override
public void onDisconnect()
{
createSocket();//Call the code above to create a new socket or call socket.connect(); but it's not working and no error throw...
Log.e("test", "DISCON");
}
@Override
public void onConnectError()
{
Log.e("test", "CONNECT ERROR");
}
};