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