Skip to content

SocketData type is not passed down to the Namespace #4229

@OrkhanAlikhanov

Description

@OrkhanAlikhanov

SocketData type is not passed down to the Namespace when we do io.of().
That results in socket.data being any type:

Example:

const io = new Server<{},{},{},{ username: string }>()

io.on('connection', socket => {
   socket.data /// { username?: string }
})

io.of('/nps').on('connection', socket => {
   socket.data /// any
})

Source code:

socket.io/lib/index.ts

Lines 577 to 582 in 51784d0

public of(
name: string | RegExp | ParentNspNameMatchFn,
fn?: (
socket: Socket<ListenEvents, EmitEvents, ServerSideEvents, SocketData>
) => void
): Namespace<ListenEvents, EmitEvents, ServerSideEvents> {

Should be:

of(...): Namespace<ListenEvents, EmitEvents, ServerSideEvents, SocketData>;

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions