Skip to main content

Socket.IO

Install

npm install socket.io
npm install @summer-js/socket.io

Config

default.config.ts
import { SocketIOConfig } from '@summer-js/socket.io'

// the SOCKET_IO_CONFIG must set even no option
export const SOCKET_IO_CONFIG: SocketIOConfig = {
// path?: string | undefined;
}

Use in Controller

import { SocketIOController, On, IO } from '@summer-js/socket.io'
import { Socket } from 'socket.io'

class MsgData {
msg: string
}

@SocketIOController
export class IOEventController {
// auto-injection
io: IO

@On connection(socket: Socket) {
console.log(socket.request.headers)
socket.send('Welcome')
}

@On disconnecting(socket: Socket) {
// disconnecting logic
}

@On disconnect(socket: Socket) {
// disconnect logic
}

@On message(socket: Socket, data: MsgData) {
console.log(data)
socket.emit('message', { hi: 'Hi' })
}

// when event name cannot use method name represent
@On('io-message') ioMessage(socket: Socket, data: MsgData) {
console.log(data)
socket.emit('evt', 'Hello')
}

}

note

connection / disconnecting / disconnect are Socket.IO build-in event

info

Class MsgData can verify incoming message structure to make every calls safe. If you don't what to verify, use interface instead. Data verify error send to client's error event