Files
core/test/rust/fixtures/websocket.dever
T
2026-11-03 03:32:07 +00:00

65 lines
2.3 KiB
Plaintext

echo(event: dever.websocket.MessageEvent.Read(message), socket: dever.system.WebSocket) () {
dever.websocket.send(socket, message)
}
echo(event: dever.websocket.MessageEvent.Failed(message), socket: dever.system.WebSocket) () {
fail(dever.websocket.MessageEvent.Failed(message))
}
route(request: dever.http.Request, reply: dever.system.HttpReply) () {
socket = dever.websocket.accept(reply, dever.websocket.defaultLimits())
each(echo, dever.websocket.messages(socket), socket)
}
serve(listener: dever.system.Listener) () {
dever.http.serveLive(route, listener, dever.http.defaultLimits(), dever.http.defaultLiveLimits())
}
received(state: dever.websocket.ReceiveState.Read(message)) (answer: Bool) {
answer = message == dever.websocket.Message.Text("你好")
}
received(state: dever.websocket.ReceiveState.End) (answer: Bool) {
answer = false
}
verify() (answer: Bool) {
listener = dever.net.listen("127.0.0.1", 0)
server = run(serve(listener))
socket = dever.websocket.connect("127.0.0.1", dever.net.port(listener), "/echo", dever.websocket.defaultLimits())
dever.websocket.send(socket, dever.websocket.Message.Text("你好"))
answer = received(dever.websocket.receive(socket))
dever.net.closeListener(listener)
dever.websocket.close(socket, 1000, "结束")
wait(server)
}
opened() (answer: Bool) {
listener = dever.net.listen("127.0.0.1", 0)
server = run(serve(listener))
url = "ws://127.0.0.1:" + int.toText(dever.net.port(listener)) + "/echo"
socket = dever.websocket.open(url, dever.tls.system(), dever.websocket.defaultLimits())
dever.websocket.send(socket, dever.websocket.Message.Text("你好"))
answer = received(dever.websocket.receive(socket))
dever.websocket.close(socket, 1000, "")
dever.net.closeListener(listener)
wait(server)
}
invalid() () {
socket = dever.websocket.connect("hostname", 80, "/", dever.websocket.defaultLimits())
dever.websocket.close(socket, 1000, "")
}
sendText(socket: dever.system.WebSocket, text: Text) () {
dever.websocket.send(socket, dever.websocket.Message.Text(text))
}
sendBinary(socket: dever.system.WebSocket, data: Bytes) () {
dever.websocket.send(socket, dever.websocket.Message.Binary(data))
}
sendMessage(socket: dever.system.WebSocket, message: dever.websocket.Message) () {
dever.websocket.send(socket, message)
}