Я пытаюсь написать привязку для socket.io.
У меня возникли проблемы с функцией (next()
в моем примере кода внизу), который либо не принимает аргумент, либо объект ошибки (Js.Exn.raiseError("ERROR!")
).
Я не могу найти способ определить сигнатуру функции, которая может принимать оба типа аргументов в качестве первого значения.
Я даже не уверен, возможно ли то, о чем я прошу, в рескрипте, была бы признательна любая помощь в решении этой проблемы надлежащим способом рескрипта.
Моя текущая реализация выглядит так:
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)