emotiv-ts
Version:
A Typescript library that wraps the Cortex API functionalities to communicate with Emotiv headsets
58 lines (57 loc) • 2.17 kB
JavaScript
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);
}
};
});
}
}