
Synchronize files that the game doesn't have yet, skip any files it knows about already. Requires Bitburner PR #4044: https://github.com/danielyxie/bitburner/pull/4044
50 lines
No EOL
1.8 KiB
JavaScript
50 lines
No EOL
1.8 KiB
JavaScript
"use strict"
|
|
import { setupWatch } from "./fileWatch.js";
|
|
import { config, loadConfig } from "./config.js";
|
|
import { setupSocket } from "./networking/webSocket.js";
|
|
import signal from "signal-js";
|
|
import { fileChangeEventToMsg, fileRemovalEventToMsg, requestFilenames } from "./networking/messageGenerators.js";
|
|
import { EventType } from "./eventTypes.js";
|
|
import { messageHandler } from "./networking/messageHandler.js";
|
|
|
|
export async function start() {
|
|
loadConfig();
|
|
const watch = await setupWatch(signal);
|
|
const socket = setupSocket(signal);
|
|
|
|
// Add a handler for received messages.
|
|
signal.on(EventType.MessageReceived, msg => messageHandler(signal, msg));
|
|
|
|
// Add a handler for when a connection to a game is made.
|
|
signal.on(EventType.ConnectionMade, () => {
|
|
console.log("Connection made!");
|
|
|
|
if (config.get("definitionFile").update) {
|
|
signal.emit(EventType.MessageSend, requestDefinitionFile());
|
|
}
|
|
|
|
// Upload missing files to the game.
|
|
signal.emit(EventType.MessageSend, requestFilenames());
|
|
})
|
|
|
|
// Add a handler for changed files.
|
|
signal.on(EventType.FileChanged, fileEvent => {
|
|
if (!config.get("quiet")) console.log(fileEvent.path + " changed");
|
|
signal.emit(EventType.MessageSend, fileChangeEventToMsg(fileEvent))
|
|
});
|
|
|
|
// Add a handler for removed files, if allowed.
|
|
if (config.get("allowDeletingFiles"))
|
|
signal.on(EventType.FileDeleted, fileEvent =>
|
|
signal.emit(EventType.MessageSend, fileRemovalEventToMsg(fileEvent)));
|
|
|
|
console.log(`Server is ready, running on ${config.get("port")}!`)
|
|
|
|
process.on('SIGINT', function () {
|
|
console.log("Shutting down!");
|
|
|
|
watch.close();
|
|
socket.close();
|
|
process.exit();
|
|
});
|
|
} |