首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScriptCore + Socket.IO

JavaScriptCore + Socket.IO
EN

Stack Overflow用户
提问于 2014-05-10 14:53:26
回答 1查看 1.4K关注 0票数 2

我试图用Node.JS应用程序连接到一个iOS服务器,但我没有使用第三方本地库,而是尝试将它连接到JavaScript Socket.IO客户机&将接收到的数据传递给我的本机代码。我正在将Socket.IO模块加载到JSContext中&它很好地加载,我可以看到io对象中所有可用的对象/函数。

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

如果我暂停应用程序,我没有看到任何额外的线程打开连接。难道JavaScriptCore不支持网络套接字吗?

我的目标-C代码:

代码语言:javascript
复制
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代码:

代码语言:javascript
复制
var socket = io.connect(socket_url);

socket.on('connect', function(){
      log("Connected!");
});

socket.on('device-change', iOSBlock(deviceState)); 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-14 13:31:17

JavaScriptCore本身只实现ECMAScript规范。XMLHTTPRequest、web套接字、DOM等东西都来自WebKit。如果您绝对希望运行Socket.IO JavaScript客户机,那么您也许可以使用隐藏的UIWebView,尽管我建议使用Socket.IO-objc

在一个无关的注意事项上,您可以通过检查JSContext的异常属性或设置一个将错误打印到exceptionHandler属性的块来查看exceptionHandler生成的错误:

代码语言:javascript
复制
context.exceptionHandler = ^(JSContext *context, JSValue *exception) {
    NSLog(@"[%@:%@:%@] %@\n%@", exception[@"sourceURL"], exception[@"line"], exception[@"column"], exception, [exception[@"stack"] toObject]);
};
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23582514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档