Add websocket logic server

- Websocket callback binding
- Websocket send message to specific connected socket

GitLab: #53

Change-Id: Ib52db5d99b0bc3ad4d1a775a62fecb9ea3b4d132
diff --git a/common/src/enums/websocket-message-type.ts b/common/src/enums/websocket-message-type.ts
new file mode 100644
index 0000000..9f95d60
--- /dev/null
+++ b/common/src/enums/websocket-message-type.ts
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2022 Savoir-faire Linux Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation; either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.  If not, see
+ * <https://www.gnu.org/licenses/>.
+ */
+export enum WebSocketMessageType {
+  WebRTCOffer = 'webrtc-offer',
+  WebRCTAnswer = 'webrtc-answer',
+}
diff --git a/common/src/index.ts b/common/src/index.ts
index 41e19b3..8dbab24 100644
--- a/common/src/index.ts
+++ b/common/src/index.ts
@@ -20,4 +20,6 @@
 export * from './Contact.js';
 export * from './Conversation.js';
 export * from './enums/http-status-code.js';
+export * from './enums/websocket-message-type.js';
+export * from './interfaces/websocket-message.js';
 export * from './util.js';
diff --git a/common/src/interfaces/websocket-message.ts b/common/src/interfaces/websocket-message.ts
new file mode 100644
index 0000000..f42b67b
--- /dev/null
+++ b/common/src/interfaces/websocket-message.ts
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2022 Savoir-faire Linux Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation; either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.  If not, see
+ * <https://www.gnu.org/licenses/>.
+ */
+import { WebSocketMessageType } from '../enums/websocket-message-type';
+
+export interface WebSocketMessage {
+  type: WebSocketMessageType;
+  data: any;
+}