【发布时间】:2023-04-11 11:34:01
【问题描述】:
我正在尝试使用 iOS 应用程序连接到 Node.JS 服务器,但我没有使用第 3 方本机库,而是尝试将其与 JavaScript Socket.IO 客户端连接并传递数据我正在接收我的本机代码。我正在将 Socket.IO 模块加载到 JSContext 中并且加载良好,我可以看到 io 对象内的所有可用对象/函数。
但是当它到达连接到我的 Node.JS 服务器的线路时,我的 JavaScript 代码的执行停止了,我无法找出原因。
如果我暂停应用程序,我看不到任何其他用于打开连接的线程。 JavaScriptCore 是否可能不支持 Web 套接字?
我的 Objective-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];
我的 JavaScript 代码:
var socket = io.connect(socket_url);
socket.on('connect', function(){
log("Connected!");
});
socket.on('device-change', iOSBlock(deviceState));
【问题讨论】:
标签: javascript objective-c ios7 socket.io javascriptcore