]> Repos - mime-chat/commitdiff
add socket code
authorriqo <hernandeze2@xavier.edu>
Tue, 9 Feb 2021 00:25:17 +0000 (18:25 -0600)
committerriqo <hernandeze2@xavier.edu>
Tue, 9 Feb 2021 00:25:17 +0000 (18:25 -0600)
src/background/recorder.ts [deleted file]
src/background/run.ts
src/background/session.ts [new file with mode: 0644]

diff --git a/src/background/recorder.ts b/src/background/recorder.ts
deleted file mode 100644 (file)
index 9bb9706..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-// eslint-disable-next-line @typescript-eslint/no-var-requires
-const portAudio = require('naudiodon');
-// eslint-disable-next-line @typescript-eslint/no-var-requires
-
-let audio: string;
-let audioInput: string[] = [];
-
-export function initRecorder() {
-
-    let ia = new portAudio.AudioIO({
-      inOptions: {
-        channelCount: 1,
-        sampleFormat: 16,
-        sampleRate: 16000,
-        deviceId: -1,
-        closeOnError: false,
-      }
-    });
-
-    ia.setEncoding('base64');
-    ia.start();
-    ia.pause();
-    ia.on('error', (e: Error) => {
-        console.log('error recording audio', + e);
-    });
-    ia.on('data', (chunk: string) => {
-      audioInput.push(chunk);
-      console.log('Got %d characters of string data:', chunk.length);
-    });
-}
-
-async function processData(chunks: string[]): Buffer | Error {
-    audio = '';
-    chunks.forEach(s => {
-        audio += s;
-    })
-    const buffer = Buffer.from(audio, "base64");
-    audioInput = [];
-    return buffer;
-}
-
index f64e1818349348b479a23e46133a69340a9b7360..21b5151f73ed040869243a7c421aebd92de4a904 100644 (file)
@@ -1,49 +1,44 @@
 import { createWindow } from './createWindow';
 import { ipcMain  } from "electron";
-import WebSocket from 'ws';
+import { initSession, sendMessage} from './session';
 import { windowEmitter } from './windowEmitter';
 import { authUser, authLogin } from './auth';
 const portAudio = require('naudiodon');
 
+interface ipcRendererPayload {
+    endpoint: string;
+    message: any;
+}
+
 /*
  * The main function will be run after electron app is ready.
  */
 export function main(): void {
 
+    // Instantiate socket session with crimata-platorm.
+    initSession();
+
     // mount auth-user listener
     ipcMain.on('auth-user', authUser);
 
     // create main window.
     const win = createWindow({ width: 350, height: 525, resizable: false });
 
-    // Instantiate socket session with crimata-platorm.
-    const socket = new WebSocket('socket://localhost:8080');
-    socket.binaryType = 'arraybuffer';
 
-    const initSession = (): void => {
-        socket.send('hernandeze2@xavier.edu');
-    }
+    windowEmitter.on('ipc-renderer', (payload: ipcRendererPayload) => {
+        win.webContents.send(payload.endpoint, {
+          message: payload.message
+        });
+    });
 
-    const sendMessage = (Event: any, payload: any): void => {
-        socket.send(JSON.stringify(payload));
-    }
-
-    const sendAudio = (data: Buffer): void => {
-        socket.send(data);
-    }
-
-    const receiveMessage = (message: string): void => {
-      // NOTE assuming message is JSON string
-      const parsed = JSON.parse(message);
-      win.webContents.send('render-message', {
-        message: parsed
-      });
+    const handleIpcRender = (event: any, arg: any) => {
+        sendMessage(arg)
     }
 
     const windowMount = (): void => {
         windowEmitter.emit('window-active', true);
         // ipc event handlers
-        ipcMain.on('send-message', sendMessage);
+        ipcMain.on('send-message', handleIpcRender);
         ipcMain.on('auth-login', authLogin);
     }
 
@@ -55,10 +50,6 @@ export function main(): void {
          ipcMain.removeAllListeners('auth-user');
     }
 
-    // socket handlers
-    socket.on('connect', initSession);
-    socket.on("message", receiveMessage);
-
     // Handle window mount and dismount.
     win.webContents.on('did-finish-load', windowMount);
     win.on("closed", windowDismount);
diff --git a/src/background/session.ts b/src/background/session.ts
new file mode 100644 (file)
index 0000000..060c554
--- /dev/null
@@ -0,0 +1,42 @@
+import WebSocket from 'ws';
+import { windowEmitter } from './windowEmitter';
+
+const ip = 'ws://localhost';
+const port = 8080;
+const username = 'hernandeze2@xavier.edu';
+
+const receiveMessage = (message: string): void => {
+  // NOTE assuming message is JSON string
+  const parsed = JSON.parse(message);
+  windowEmitter.emit('ipc-renderer', {
+      endpoint: 'render-message',
+      message: parsed
+  });
+}
+
+let socket: WebSocket;
+
+export function initSession() {
+
+    try {
+        socket = new WebSocket(`${ip}:${port}`);
+        socket.binaryType = 'arraybuffer';
+
+        socket.on('open', () => {
+            socket.send(username);
+        })
+
+        socket.on("message", receiveMessage);
+
+    } catch(e) {
+        console.log('error connecting socket', + e);
+    }
+}
+
+export const sendMessage = (content: string | Buffer) => {
+    if (content instanceof Buffer) {
+        socket.send(content);
+    } else {
+        socket.send(JSON.stringify(content));
+    }
+}