【问题标题】:How to Run JXCORE如何运行 JXCORE
【发布时间】:2015-03-12 17:33:07
【问题描述】:

我正在尝试运行 jxcore。但我不能。请帮帮我,因为我是新手。

server.js

var http = require("http");

jxcore.tasks.on('message', function (threadId, param)  {   
    console.log('Main thread received a message from subthread no ' +
                   threadId + '. Message: ', param);
});

http.createServer(function(req,resp) {
    console.log("Listening To Thread " + process.threadId);   
    resp.writeHead(200,{"Content-Type":"text/html"});    
    resp.end("Running JXCORE "+process.threadId);
}).listen(3000);

serverjx.js

var method = function() {
    try  {
        process.keepAlive();
        require("server");
        console.log("Welcome To NodeJS");
        return {
            someResult: "some result";
        };
    } catch(e) {
        console.log("Error Occured : "+e);
        return {"Error":e};
    }
}

jxcore.tasks.runOnce(code, {count:1000}, function(obj) {
    process.sendToMain({started:true});
    console.log("Return Value " + obj);

    setTimeout(function() {
        console.log("Waiting For TimeOut 5 Sec");
    }, 5000);
});

我在 cmd 上输入 jx server.js jx mt-keep server.js

我没有看到线程正在运行。请帮忙

【问题讨论】:

    标签: javascript html node.js jxcore


    【解决方案1】:

    这里有几个结构性错误。另外,您要做什么并不明显。

    场景 1 - 仅运行 server.js

    它们都有效:jx mt server.jsjx mt-keep server.js

    场景 2 - 运行 serverjx.js 为每个线程加载 server.js

    在这里,您可能尝试使用jxcore.tasks.runOnce() 在每个线程上创建一个http 服务器。所以每个线程都会加载 server.js 并在那里创建它自己的 http 服务器实例。

    这应该以这种方式启动:jx serverjx.js(没有 mt 或 mt-keep)

    虽然我看不出这样做有什么意义(为什么不像场景 1 那样运行它,因为它是多线程 http 服务器的正确方法?),经过几次修复后,代码将如下所示:

    serverjx.js

    var method = function () {
        try {
            process.keepAlive();
            require("./server");
            console.log("Welcome To NodeJS");
            return {
                someResult: "some result"
            };
        } catch (e) {
            console.log("Error Occured : " + e);
            return {"Error": e};
        }
    };
    
    jxcore.tasks.runOnce(method, {count: 1000});
    

    请注意几点:

    • 如果您尝试加载 server.jsrequire('server') 是错误的 - 您必须调用 require('./server')
    • jxcore.tasks.runOnce(code, ...) 是错误的 - 应该是 jxcore.tasks.runOnce(method, ...)
    • jxcore.tasks.runOnce 没有收到回调参数,所以我删除了这个。

    另一件事是,在您的回调中,您试图将对象发送到主线程 (process.sendToMain({started:true})),但您已将侦听器定位在 server.js (jxcore.tasks.on('message')) 中fact 被加载到一个线程中(因此它不是主线程)并且消息无法到达那里。

    【讨论】:

      猜你喜欢
      • 2015-11-01
      • 2016-03-20
      • 2023-03-25
      • 2015-08-29
      • 1970-01-01
      • 2017-09-07
      • 2015-07-03
      • 2014-05-02
      • 2016-02-07
      相关资源
      最近更新 更多