【问题标题】:How to start node.js socket.io server from within a brackets extension如何从方括号扩展中启动 node.js socket.io 服务器
【发布时间】:2017-06-02 12:55:53
【问题描述】:

我正在尝试编写一个括号扩展,将数据发送到服务器。在 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 文件...我不需要网站,只需要一个可以传输数据的服务器。

【问题讨论】:

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


    【解决方案1】:

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-12
      • 1970-01-01
      • 2012-04-11
      • 2015-08-29
      • 2012-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多