import DataChannel from "./networking/DataChannel.js"; import Signaler from "./networking/Signaler.js"; /** * A local server. Handles all the important game logic, and communicates with clients via DataChannels. */ export default class SkribblServer { /** * Starts a new SkribblServer. */ constructor(){ this._readyPromise = (async()=>{ this._id = await Signaler.host(dataChannel=>{ this.connect(dataChannel); }); })(); } /** * Waits until the server is ready. */ async waitUntilReady(){ return this._readyPromise; } /** * The ID others can use to connect to this server. * @readonly */ get id(){ return this._id; } /** * Returns the full url others can use to connect to this server. * @readonly */ get url(){ return document.location.host+document.location.pathname+"#"+this._id; } /** * Adds an incoming connection as a client. * @param {DataChannel} dataChannel */ connect(dataChannel){ dataChannel.onMessage(message=>{ console.log(`message from client: "${message}"`); dataChannel.send("Got your message :D"); }); } }