gpt4 book ai didi

JavaScriptCore + Socket.IO

转载 作者:行者123 更新时间:2023-11-29 16:12:48 27 4
gpt4 key购买 nike

我正在尝试使用 iOS 应用程序连接到 Node.JS 服务器,但我没有使用第 3 方 native 库,而是尝试将其与 JavaScript Socket.IO 客户端连接并传递数据我正在接收我的 native 代码。我正在将 Socket.IO 模块加载到 JSContext 中,它加载得很好,我可以在 io 对象中看到所有可用的对象/函数。

但是当它到达连接到我的 Node.JS 服务器的那一行时,我的 JavaScript 代码的执行停止了,我无法找出原因。

如果我暂停应用程序,我看不到任何用于打开连接的额外线程。 JavaScriptCore 是否可能不支持网络套接字?

我的 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));

最佳答案

JavaScriptCore 本身只实现了 ECMAScript spec .诸如 XMLHTTPRequest、Web 套接字、DOM 等东西来自 WebKit。如果你绝对想运行 Socket.IO JavaScript 客户端,你也许可以使用隐藏的 UIWebView,尽管我建议使用 Socket.IO-objc。 .

在一个不相关的注释中,您可以通过检查其异常属性或设置一个将错误打印到 exceptionHandler 属性的 block 来查看 JSContext 生成的错误:

context.exceptionHandler = ^(JSContext *context, JSValue *exception) {
NSLog(@"[%@:%@:%@] %@\n%@", exception[@"sourceURL"], exception[@"line"], exception[@"column"], exception, [exception[@"stack"] toObject]);
};

关于JavaScriptCore + Socket.IO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23582514/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com