Initial network P2P share code.

This commit is contained in:
Michael Mainguy 2023-08-02 19:29:54 -05:00
parent bbf78be463
commit f44d84b7be
4 changed files with 47 additions and 3 deletions

1
package-lock.json generated
View File

@ -7,7 +7,6 @@
"": { "": {
"name": "immersive", "name": "immersive",
"version": "0.0.1", "version": "0.0.1",
"hasInstallScript": true,
"dependencies": { "dependencies": {
"@babylonjs/core": "^6.14.0", "@babylonjs/core": "^6.14.0",
"@babylonjs/gui": "^6.14.0", "@babylonjs/gui": "^6.14.0",

View File

@ -23,6 +23,7 @@ import {DualshockEventMapper} from "./util/dualshockEventMapper";
import log from "loglevel"; import log from "loglevel";
import {AppConfig} from "./util/appConfig"; import {AppConfig} from "./util/appConfig";
import {DiaSounds} from "./util/diaSounds"; import {DiaSounds} from "./util/diaSounds";
import {PeerjsNetworkConnection} from "./integration/peerjsNetworkConnection";
export class App { export class App {
//preTasks = [havokModule]; //preTasks = [havokModule];
@ -37,6 +38,7 @@ export class App {
const config = AppConfig.config; const config = AppConfig.config;
log.setLevel('info'); log.setLevel('info');
log.getLogger('App').setLevel('debug'); log.getLogger('App').setLevel('debug');
log.getLogger('PeerjsNetworkConnection').setLevel('debug');
const canvas = document.createElement("canvas"); const canvas = document.createElement("canvas");
canvas.style.width = "100%"; canvas.style.width = "100%";
canvas.style.height = "100%"; canvas.style.height = "100%";
@ -112,6 +114,7 @@ export class App {
const diagramManager = new DiagramManager(this.scene, xr.baseExperience); const diagramManager = new DiagramManager(this.scene, xr.baseExperience);
this.rig = new Rigplatform(this.scene, xr, diagramManager); this.rig = new Rigplatform(this.scene, xr, diagramManager);
const toolbox = new Toolbox(scene, xr.baseExperience, diagramManager); const toolbox = new Toolbox(scene, xr.baseExperience, diagramManager);
//const network = new PeerjsNetworkConnection();
import ('./diagram/indexdbPersistenceManager').then((module) => { import ('./diagram/indexdbPersistenceManager').then((module) => {
const persistenceManager = new module.IndexdbPersistenceManager("diagram"); const persistenceManager = new module.IndexdbPersistenceManager("diagram");

View File

@ -1,3 +1,46 @@
export class PeerjsNetworkConnection { import P2PDataChannel from 'p2p-data-channel';
import log from "loglevel";
export class PeerjsNetworkConnection {
private logger: log.Logger = log.getLogger('PeerjsNetworkConnection');
private dataChannel: P2PDataChannel<any>;
constructor() {
const config = {
debug: false,
dataChannel: 'default',
connectionTimeout: 5000,
pingInterval: 4000,
pingTimeout: 8000
}
const data = window.location.search.replace('?', '')
.split('&')
.map((x) => x.split('='));
this.dataChannel = new P2PDataChannel(data[0][1], config);
this.dataChannel.onConnected((peerId) => {
this.logger.debug(peerId, ' connected');
});
this.dataChannel.onMessage((message) => {
this.logger.debug(message.payload, ' received from ', message.sender);
});
this.connect();
}
private async connect() {
try {
const data = window.location.search.replace('?', '')
.split('&')
.map((x) => x.split('='));
const connection = await this.dataChannel.connect(data[1][1]).then(() => {
console.log('Connected');
});
this.dataChannel.broadcast({payload: 'Hello World'});
} catch (err) {
this.logger.error(err);
}
}
} }

View File

@ -9,7 +9,6 @@ export default defineConfig({
'/callback': 'https://local.immersiveidea.com' '/callback': 'https://local.immersiveidea.com'
} }
}, },
base: "/" base: "/"
}) })