UNPKG

siesta-lite

Version:

Stress-free JavaScript unit testing and functional testing tool, works in NodeJS and browsers

55 lines (33 loc) 1.44 kB
import {Base} from "../../../generic/util/Common.js"; import {Channel, Envelop, Message} from "../../../generic/channel/Types.js"; import {ChannelEndPoint} from "../../../generic/channel/ChannelEndPoint.js"; import {parseJsonSafely} from "../../../generic/util/helper/ParseJsonSafely.js"; import {NodeJsLogger} from "../../util/role/NodeJsLogger.js"; type ServerWebSocket = any export class ServerEndPoint extends ChannelEndPoint(NodeJsLogger(Base)) { socket : ServerWebSocket messageListener : (...args) => any constructor (props : Partial<ServerEndPoint>) { super(props) Object.assign(this, props) if (!this.socket) throw new Error("`socket` attribute is required") } doConnect (channel : Channel) : Promise<any> { this.socket.addListener('message', this.messageListener = this.onRawChannelMessage.bind(this)) return Promise.resolve() } doDisconnect () { this.socket.removeListener('message', this.messageListener) } sendMessage (message : Message) { this.socket.send(message) } messageToEnvelop (message : Message) : Envelop | undefined { const envelop : Envelop = parseJsonSafely(message) as Envelop if (envelop && envelop.id == null) return undefined return envelop } envelopToMessage (envelop : Envelop) : Message { return JSON.stringify(envelop) } }