from soyokaze import Client, CloseCode, Error, Message, Opcode, Port, Server
def echo(socket):
try:
while True:
opcode, payload = socket.receive_message()
socket.send_message(opcode, payload)
except Error:
pass
def decline(request):
response = Message.response(426, request.version)
response.set_body("this port speaks WebSocket")
return response
def main():
server = Server()
handle = server.serve(decline, [Port.TCP(0)], on_websocket=echo)
client = Client()
socket = client.websocket(f"ws://127.0.0.1:{handle.port}/echo")
for message in ["hello", "soyokaze"]:
socket.send_message(Opcode.TEXT, message)
opcode, payload = socket.receive_message()
print(f"{opcode.name} {payload.decode()}")
socket.close(CloseCode.NORMAL, "")
handle.close(5)
if __name__ == "__main__":
main()