+++ /dev/null
-// 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;
-}
-
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);
}
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);
--- /dev/null
+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));
+ }
+}