将 NPAPI 插件与节点一起使用

use NPAPI plugin with node

本文关键字:一起 节点 NPAPI 插件      更新时间:2023-09-26

我正在制作一个利用npapi插件的节点应用程序。 基本上我正在尝试这样做,因此如果连接到服务器的设备或浏览器不支持该插件,它将回退到服务器。 目前我有一个解决方法,但是每当发送请求时,它都需要在主机上打开一个新窗口

(解决方法路由)

var open = require('open');
var jobs = [];
router.get('/nsjob', function(req, res, next){
    var job = {
            id:(jobs.length > 0) ? jobs[jobs.length - 1].index + 1:0,
            xml://xml,
            params://params,
            callback:function(err, data){
                if(err)
                  return next(err);
                res.send(data);
            }
        };
    open('http://localhost:3000/handleJob/' + job.index);
});
router.get('/handleJob/:id', function(req, res){
    var job;
    for(var i in jobs){
        if(jobs[i].index === req.params.id){
            job = jobs[i];
            break;
        }
    }
    res.render('hjob', job')
});
router.post('/completedJob/:id', function(req, res){
    var job;
    for(var i in jobs){
        if(jobs[i].index === req.params.id){
            job = jobs[i];
            break;
        }
    }
    if(req.body)
       job.callback(req.body.err, req.body.data);
    else
       job.callback(null, null);
    res.end();
});

这工作得很好,但似乎是一种非常糟糕的方法,但是我需要这个回退选项,但它使得在移动设备在服务器上运行时几乎无法使用主机。 如果我可以将 NPAPI 插件加载到节点,我可以修改 API 以不使用 dom,并且基本上避免在主机上打开窗口。 但是我找不到办法在 NODE 而不是NODE-WEBKIT 中执行此操作(直到它可以运送到移动设备之前,在这种情况下几乎毫无用处,因为这主要由移动用户使用。

你可以假设编写一个 Node 模块来加载一个 NPAPI 插件,但这非常困难。绝对没有任何交钥匙解决方案。

FireBreath 2.0将支持一种可能用于执行此操作的新协议,但它仍处于早期规划阶段。 我预计至少一两个月不会有任何发布。