我尝试为 socket.io 编写一个绑定。
我在使用不带参数或错误对象 ( ) 的函数时遇到问题(next()
在底部的示例代码中Js.Exn.raiseError("ERROR!")
)。
我找不到一种方法来定义可以将两种类型的参数作为第一个值的函数签名。
我什至不确定,如果我所要求的内容可以在 rescript 中实现,那么以正确的 rescript 方式解决该问题的任何帮助将不胜感激。
我当前的实现如下所示:
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)