65 lines
2.3 KiB
Plaintext
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)
|
|
}
|