Próbuję napisać kotwicy dla socket.io.
Mam problem z funkcją (next()
w moim przykładzie kodu na dole), który albo nie przyjmuje argumentu, albo obiekt błędy (Js.Exn.raiseError("ERROR!")
).
Nie mogę znaleźć sposób, aby ustalić sygnaturę funkcji, która może przyjmować oba rodzaje argumentów jako pierwszej wartości.
Nie wiem nawet, czy możliwe jest to, o co proszę, w рескрипте, była bym wdzięczna każda pomoc w rozwiązaniu tego problemu w odpowiedni sposób рескрипта.
Moja obecna implementacja wygląda tak:
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)