RECEIVE_CRISIS 이상의 데이터 수신을 시작하려면 socket
에 연결하고 자격증 명 정보를 보내야합니다.Android에서 소켓을 통해 데이터 보내기
난 Socket.IO 안드로이드 코드 용 라이브러리를 사용하고 있습니다. 연결에서 로그를 얻지 못했기 때문에 디버그하기가 정말 어렵습니다. 왜 실패했는지 모릅니다. 안드로이드 측에서 작업을 시작한 이래로 서버에서 아무 것도받지 못했습니다. NSDictionary
은 Android의 JSONObject
과 동일합니까? sendEvent
은 Android의 send()
또는 emit()
과 동일합니까? JSON을 Object 또는 Array로 보내야합니까? 마지막으로 로그 오류를 얻는 방법은 무엇입니까?
내가 좀 잃었어요 그래서 아이폰 OS 부분에서 일하고 ..이
이것은 아이폰 OS 코드입니다 (I 안전 목적을 위해 주소를 수정) :
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 폴링 오류가 표시됩니다. 나는 이것이 Retrofit을 사용하는 것과 같은 문제가 있었기 때문에 SSL 인증과 관련이있을 것이라고 생각합니다. 내 질문을 업데이트했습니다. – Jaythaking
다른 오류가 발생하면 다른 질문에 필요한 세부 정보를 게시하십시오. –
초기 문제는 해결되지 않았습니다. – Jaythaking