iOS 응용 프로그램이있는 Node.JS 서버에 연결하려고하지만 타사 네이티브 라이브러리를 사용하는 대신 JavaScript Socket.IO 클라이언트와 연결하려고합니다 & 내가받은 데이터를 내 기본 코드로 전달할 수 있습니다. Socket.IO 모듈을 JSContext &으로로드하고 있습니다.로드가 잘되고, io 객체 안에있는 모든 사용 가능한 객체/함수를 볼 수 있습니다.JavaScriptCore + Socket.IO
하지만 내 Node.JS 서버에 연결하기위한 줄에 도달하면 JavaScript 코드 실행이 중지됩니다 & 이유를 찾을 수 없습니다.
앱을 일시 중지하면 연결을 여는 데 추가 스레드가 표시되지 않습니다. JavaScriptCore가 웹 소켓을 지원하지 않을 수 있습니까?
내 목표 - C 코드 :
JSContext *context = [JSContext new];
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"socket.io" ofType:@"js"];
NSString *socketIO = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];;
filePath = [[NSBundle mainBundle] pathForResource:@"client" ofType:@"js"];
NSString *client = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];
context[@"socket_url"] = @"http://192.168.1.128:8080";
context[@"log"] = ^(NSString *string){
NSLog(@"JavaScript:\n\t%@", string);
};
context[@"iOSBlock"] = ^(id deviceState) {
id JSON = [NSJSONSerialization JSONObjectWithData:deviceState options:NSJSONReadingMutableLeaves error:nil];
// I'll do something here if I get reach this part :)
};
[context evaluateScript:socketIO];
[context evaluateScript:client];
내 자바 스크립트 코드 :
var socket = io.connect(socket_url);
socket.on('connect', function(){
log("Connected!");
});
socket.on('device-change', iOSBlock(deviceState));