123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- import { Server, Socket } from "socket.io"
- import { Server as httpServer } from "http"
- import * as U from '../Utils'
- import * as T from '../Types'
- const socketio = require('socket.io')
-
- export class PromiseIO {
- io?: Server
- private listeners: { [eventName in string]: ((...args: any) => void)[] } = {
- socket: [],
- connect: []
- }
-
- static createServer(): PromiseIO {
- return new PromiseIO();
- }
-
- attach(httpServer: httpServer) {
- this.io = socketio(httpServer)
- }
-
- listen(port: number) {
- this.io!.on('connection', (sock: Socket) => {
- const pioSock = U.makePioSocket(sock)
- this.listeners['socket'].forEach(listener => listener(pioSock))
- this.listeners['connect'].forEach(listener => listener(pioSock))
- /*
- pioSock.on('error', ()=>console.log('error'));
-
- pioSock.on('connect_timeout', ()=>console.log('connect_timeout'))
- pioSock.on('disconnect', ()=>console.log('disconnect'))
- pioSock.on('reconnect', ()=>console.log('reconnect'))
- pioSock.on('reconnect_attempt', ()=>console.log('reconnect_attempt'))
- pioSock.on('reconnecting', ()=>console.log('reconnecting'));
- pioSock.on('reconnect_failed', ()=>console.log('reconnect_failed'));
- pioSock.on('reconnecting', ()=>console.log('reconnecting'));
- */
- })
- this.io!.listen(port)
- }
-
- on(eventName: string, listener: T.AnyFunction) {
- if (this.listeners[eventName] == null) {
- this.listeners[eventName] = []
- }
- this.listeners[eventName].push(listener)
- }
-
- close = () => {
- if(this.io){
- this.io.engine.ws.close()
- this.io.close()
- this.io = undefined
- }
- }
-
- }
|