我需要连接到socket
并发送凭据信息才能通过接收即将发生的数据RECEIVE_CRISIS。在Android中通过套接字发送数据
我正在使用库适用于Android的Socket.IO。由于我没有从连接中获得日志,所以调试真的很难,我不知道为什么以及它在哪里失败。自从我开始在Android上工作以来,我从未从服务器收到任何内容。 Android上的NSDictionary
是否等于JSONObject
?在Android上,sendEvent
等于send()
还是emit()
?我是否需要将JSON作为对象或数组发送?最后,如何获取日志错误?
它的工作iOS上的一部分,所以我有点失去..
这是的iOS代码:(我修改地址为安全目的):
NSDictionary *[email protected]{@"user":_username,@"orgid":_organizationId};
[_socketIO connectToHost:@"nodejs.myserver.com" onPort:3000 ];
[_socketIO sendEvent:@"joinparty" withData:params];
这是安卓代码:
private void connectAndListen(int username) throws Exception {
socket = IO.socket("nodejs.myserver.com:3000");
socket.connect();
JSONObject json = new JSONObject();
json.put("user", username);
json.put("orgid", settings.getString("orgid", ""));
Log.e(TAG, json.toString());
socket.send("joinparty",json);
socket.emit("joinparty", json);
socket.on(RECEIVE_CRISIS, onCrisis);
}
修订问题
private void connectAndListen(int id) throws Exception {
IO.setDefaultSSLContext(SSLContext.getDefault());
// Set default hostname
HostnameVerifier hostnameVerifier = new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
HostnameVerifier hv = HttpsURLConnection.getDefaultHostnameVerifier();
return true;
}
};
IO.setDefaultHostnameVerifier(hostnameVerifier);
IO.Options options = new IO.Options();
// set as an option
options.sslContext = SSLContext.getDefault();
options.hostnameVerifier = hostnameVerifier;
options.secure = true;
socket = IO.socket("nodejs.myserver.com:3000", options);
socket.connect();
JSONObject json = new JSONObject();
json.put("user", id);
json.put("orgid", settings.getString("orgid", ""));
Map<Object, Object> arrays = new HashMap<>();
arrays.put("user", id);
arrays.put("orgid",settings.getString("orgid", ""));
socket.emit("joinparty", arrays);
socket.on(RECEIVE_CRISIS, onCallback);
socket.on("connect_error", onCallback);
socket.on("connect", onCallback);
socket.on("Object", onCallback);
socket.on("connect_timeout", onCallback);
}
private Emitter.Listener onCallback = new Emitter.Listener() {
@Override
public void call(Object... args) {
Log.e(TAG, args[0]+"");
}
};
现在我终于看到一个错误:xhr poll poll error。我认为这可能与SSL认证有关,因为我使用Retrofit这样的问题。我更新了我的问题 – Jaythaking
对于不同的错误,请发布其他问题并提供必要的详细信息。 –
虽然最初的问题并未解决 – Jaythaking