如何从括号扩展名中启动node.js socket.io服务器

时间:2017-06-02 12:55:54

标签: javascript node.js plugins socket.io adobe-brackets

我正在尝试编写一个括号扩展名,其中数据被发送到服务器。在main.js文件中,我想执行一个server.js文件,在该文件中我创建了一个node.js socket.io服务器。完成后,扩展应该能够将数据发送到该服务器。

我的目录如下所示:

|-- myExtensionFolder
    |-- node
        |-- node_modules
        |-- server.js
    |-- main.js
    |-- package.json

我的server.js文件目前包含:

var server = require("http").createServer(),
socket = require("socket.io")(server);

socket.on("connect", function(){
    console.log("connected");
});

socket.on("event", function(data){
    console.log("event");
});

socket.on("disconnect", function(){
    console.log("disconnected");
});

server.listen(3000);

我的main.js文件包含:

define(function (require, exports, module) {
    "use strict";

    console.log("start extension");

    // The CommandManager registers command IDs with functions
    var CommandManager = brackets.getModule("command/CommandManager"),
    // This holds the list of all default commands
    Commands = brackets.getModule("command/Commands");

    var serverModule = require("node/server");
    //I'm trying to get the server.js file here and would like to somehow execute it 
})

所以我的问题是:如何从main.js文件中的server.js文件启动服务器?

如果有些人想知道为什么我没有index.html文件......我不需要一个网站,只需要一个可以传输数据的服务器。

1 个答案:

答案 0 :(得分:0)

Brackets的主要代码和您的扩展程序在Chromium环境中运行。 如果要在节点上下文中执行某些操作,则必须实现NodeDomain

domain.js

var _domainManager;
var DOMAIN_NAME = "kerstinsServer";

function start() {
    var server = require("http").createServer(),
        socket = require("socket.io")(server);

    socket.on("connect", function () {
        _domainManager.emitEvent(DOMAIN_NAME, "out", "connected");
    });
}

function init(domainManager) {
    _domainManager = domainManager;
    if (!domainManager.hasDomain(DOMAIN_NAME)) {
        domainManager.registerDomain(DOMAIN_NAME, {
            major: 0,
            minor: 1
        });
    }
    domainManager.registerCommand(
        DOMAIN_NAME, // domain name
        "start", // command name
        start, // command handler function
        false, // this command is synchronous in Node
        "Starts the server"
    );
}

main.js

define(function (require, exports, module) {
    "use strict";

    var ExtensionUtils = brackets.getModule("utils/ExtensionUtils");
    var NodeDomain = brackets.getModule("utils/NodeDomain");
    var nodeDomain = new NodeDomain("kerstinsServer", ExtensionUtils.getModulePath(module, "domain"));

    nodeDomain.exec("start");
    nodeDomain.on("out", function (event, message) {
        console.log(message);
    });
});

有关详细信息,请参阅developer guide