UNPKG

emotiv-ts

Version:

A Typescript library that wraps the Cortex API functionalities to communicate with Emotiv headsets

58 lines (57 loc) 2.17 kB
import { CreateSession } from "../models/requests/sessions/create-session"; import { ActivateSession } from "../models/requests/sessions/activate-session"; import { CloseSession } from "../models/requests/sessions/close-session"; import { Requests } from "../enums/internal/emotiv.requests"; export class SessionService { socket; static sessionId = ""; constructor(socket) { this.socket = socket; } createSession(authToken, headsetId) { let context = this; let createSessionRequest = new CreateSession(authToken, headsetId); return new Promise(function (resolve, reject) { context.socket.send(JSON.stringify(createSessionRequest)); context.socket.onmessage = (message) => { try { let data = JSON.parse(message.data); if (data['id'] == Requests.CREATE_SESSION) { console.debug("CreateSession response:", data); SessionService.sessionId = data['result']['id']; resolve(SessionService.sessionId); } } catch (error) { console.error(error); } }; }); } static getSessionId() { return this.sessionId; } activateSession(authToken, sessionId) { this.updateSession(new ActivateSession(authToken, sessionId)); } closeSession(authToken, sessionId) { this.updateSession(new CloseSession(authToken, sessionId)); } updateSession(sessionRequest) { let context = this; return new Promise(function (resolve, reject) { context.socket.send(JSON.stringify(sessionRequest)); context.socket.onmessage = (message) => { try { if (JSON.parse(message.data)['id'] == sessionRequest.id) { console.log(message.data); resolve(message.data); } } catch (error) { console.error(error); } }; }); } }