server.gd 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. extends Control
  2. @onready var _server: WebSocketServer = $WebSocketServer
  3. @onready var _log_dest: RichTextLabel = $Panel/VBoxContainer/RichTextLabel
  4. @onready var _line_edit: LineEdit = $Panel/VBoxContainer/Send/LineEdit
  5. @onready var _listen_port: SpinBox = $Panel/VBoxContainer/Connect/Port
  6. func info(msg: String) -> void:
  7. print(msg)
  8. _log_dest.add_text(str(msg) + "\n")
  9. #region Server signals
  10. func _on_web_socket_server_client_connected(peer_id: int) -> void:
  11. var peer: WebSocketPeer = _server.peers[peer_id]
  12. info("Remote client connected: %d. Protocol: %s" % [peer_id, peer.get_selected_protocol()])
  13. _server.send(-peer_id, "[%d] connected" % peer_id)
  14. func _on_web_socket_server_client_disconnected(peer_id: int) -> void:
  15. var peer: WebSocketPeer = _server.peers[peer_id]
  16. info("Remote client disconnected: %d. Code: %d, Reason: %s" % [peer_id, peer.get_close_code(), peer.get_close_reason()])
  17. _server.send(-peer_id, "[%d] disconnected" % peer_id)
  18. func _on_web_socket_server_message_received(peer_id: int, message: String) -> void:
  19. info("Server received data from peer %d: %s" % [peer_id, message])
  20. _server.send(-peer_id, "[%d] Says: %s" % [peer_id, message])
  21. #endregion
  22. #region UI signals
  23. func _on_send_pressed() -> void:
  24. if _line_edit.text == "":
  25. return
  26. info("Sending message: %s" % [_line_edit.text])
  27. _server.send(0, "Server says: %s" % _line_edit.text)
  28. _line_edit.text = ""
  29. func _on_listen_toggled(pressed: bool) -> void:
  30. if not pressed:
  31. _server.stop()
  32. info("Server stopped")
  33. return
  34. var port := int(_listen_port.value)
  35. var err := _server.listen(port)
  36. if err != OK:
  37. info("Error listing on port %s" % port)
  38. return
  39. info("Listing on port %s, supported protocols: %s" % [port, _server.supported_protocols])
  40. #endregion