You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS中nodejs-mobile与Objective C跨层消息传递方案问询

可行性与实现方案

完全可行,nodejs-mobile 原生支持 Node.js(WebSocket 客户端所在层)与 Objective-C 层的双向通信,下面提供两种常用实现方式:

方式一:通过消息通道(Channel)传递数据

这是 nodejs-mobile 官方推荐的通用通信方式,适配各类消息传递场景。

Node.js(JavaScript)侧代码

WebSocket 接收到消息后,通过通道将消息发送至 Objective-C 层:

const mobile = require('nodejs-mobile');

// WebSocket 客户端接收消息逻辑
webSocket.on('message', (textmessage) => {
  // 发送消息到 Objective-C 层,自定义消息标识用于区分业务类型
  mobile.channel.send({
    type: 'websocket_message',
    content: textmessage
  });
});

Objective-C 侧代码

监听通道消息,接收到后更新 UI(注意:UI 操作必须在主线程执行):

#import <NodeMobile/NodeMobile.h>

// 初始化 nodejs-mobile 实例并设置消息监听
NodeMobile *nodeInstance = [[NodeMobile alloc] initWithScriptPath:@"你的JS脚本路径"];
[nodeInstance.channel setMessageHandler:^(id message) {
    if ([message isKindOfClass:[NSDictionary class]] && [[message objectForKey:@"type"] isEqualToString:@"websocket_message"]) {
        NSString *textmessage = [message objectForKey:@"content"];
        // 切换到主线程更新 UI,避免线程异常
        dispatch_async(dispatch_get_main_queue(), ^{
            [textfield setStringValue:textmessage];
        });
    }
}];

// 启动 Node.js 实例
[nodeInstance start];

方式二:注册原生导出方法供 JS 直接调用

该方式更贴近你给出的示例,让 JS 可以直接调用 Objective-C 中注册的方法。

Objective-C 侧代码

先注册要暴露给 JS 的方法:

#import <NodeMobile/NodeMobile.h>

NodeMobile *nodeInstance = [[NodeMobile alloc] initWithScriptPath:@"你的JS脚本路径"];

// 注册导出方法,第一个参数为 JS 中调用的方法名,第二个为方法实现
[nodeInstance.exports registerExport:@"myObjCfunction" withBlock:^(NSArray *args) {
    if (args.count > 0) {
        NSString *textmessage = args[0];
        // 主线程更新 UI
        dispatch_async(dispatch_get_main_queue(), ^{
            [textfield setStringValue:textmessage];
        });
    }
}];

[nodeInstance start];

Node.js(JavaScript)侧代码

WebSocket 接收消息后直接调用注册的 Objective-C 方法:

const mobile = require('nodejs-mobile');

webSocket.on('message', (textmessage) => {
    // 调用 Objective-C 中注册的 myObjCfunction 方法
    mobile.exports.myObjCfunction(textmessage);
});

内容的提问来源于stack exchange,提问作者Chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 10:10:26