Eu tento escrever uma ligação por socket.io.
Eu estou tendo problemas com uma função (next()
no meu código de exemplo na parte inferior), que leva nenhum argumento ou um objeto de erro (Js.Exn.raiseError("ERROR!")
).
Eu não consigo encontrar uma maneira de definir uma função de assinatura que pode ter os dois tipos de argumento como o primeiro valor.
Eu não estou mesmo certo que, se o que eu estou pedindo é possível em decreto, qualquer ajuda para resolver o problema no próprio decreto forma, seria apreciada.
Meu implementação atual se parece com isso:
type server
type socket
type next = (. unit) => unit
@new @module("socket.io") external socketIO: unit => server = "Server"
@send external use: (server, (socket, next) => unit) => unit = "use"
@send external listen: (server, int) => unit = "listen"
@send external on: (server, @string [ #connection(socket => unit) ] ) => unit = "on"
let io = socketIO()
io->use((socket, next) => {
Js.log("FIRST")
next(.)
})
io->use((socket, next) => {
Js.log("SECOND")
next(.)
})
io->on(#connection(socket =>
Js.log("CONNECT")
))
io->listen(3000)