Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

Server.ts 2.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import { Server, Socket } from "socket.io"
  2. import { Server as httpServer } from "http"
  3. import * as U from '../Utils'
  4. import * as T from '../Types'
  5. import socketio = require('socket.io')
  6. export class PromiseIO {
  7. io?: Server
  8. httpServer: httpServer
  9. private listeners: { [eventName in string]: ((...args: any) => void)[] } = {
  10. socket: [],
  11. connect: []
  12. }
  13. attach(httpServer: httpServer) {
  14. this.httpServer = httpServer
  15. this.io = socketio(httpServer, { cookie:false })
  16. this.io!.on('connection', (clientSocket: Socket) => {
  17. console.log(this.listeners);
  18. clientSocket.use((packet, next) => {
  19. console.log(this.listeners[packet[0]]);
  20. console.log(packet[0]);
  21. next()
  22. })
  23. clientSocket['address'] = clientSocket.handshake.headers["x-real-ip"] || clientSocket.handshake.address
  24. const pioSock = U.makePioSocket(clientSocket)
  25. this.listeners['socket'].forEach(listener => listener(pioSock))
  26. this.listeners['connect'].forEach(listener => listener(pioSock))
  27. /*
  28. pioSock.on('error', ()=>console.log('error'));
  29. pioSock.on('connect_timeout', ()=>console.log('connect_timeout'))
  30. pioSock.on('disconnect', ()=>console.log('disconnect'))
  31. pioSock.on('reconnect', ()=>console.log('reconnect'))
  32. pioSock.on('reconnect_attempt', ()=>console.log('reconnect_attempt'))
  33. pioSock.on('reconnecting', ()=>console.log('reconnecting'));
  34. pioSock.on('reconnect_failed', ()=>console.log('reconnect_failed'));
  35. pioSock.on('reconnecting', ()=>console.log('reconnecting'));
  36. */
  37. })
  38. }
  39. listen(port: number) {
  40. this.httpServer!.listen(port)
  41. }
  42. on(eventName: string, listener: T.AnyFunction) {
  43. if (this.listeners[eventName] == null) {
  44. this.listeners[eventName] = []
  45. }
  46. this.listeners[eventName].push(listener)
  47. }
  48. close = () => {
  49. if(this.io){
  50. this.io.engine.ws.close()
  51. this.io.close()
  52. this.io = undefined
  53. }
  54. }
  55. }