|
@@ -46,9 +46,10 @@ void WebSocketServer::_bind_methods() {
|
|
|
ClassDB::bind_method(D_METHOD("has_peer", "id"), &WebSocketServer::has_peer);
|
|
|
ClassDB::bind_method(D_METHOD("get_peer_address", "id"), &WebSocketServer::get_peer_address);
|
|
|
ClassDB::bind_method(D_METHOD("get_peer_port", "id"), &WebSocketServer::get_peer_port);
|
|
|
- ClassDB::bind_method(D_METHOD("disconnect_peer", "id"), &WebSocketServer::disconnect_peer);
|
|
|
+ ClassDB::bind_method(D_METHOD("disconnect_peer", "id", "code", "reason"), &WebSocketServer::disconnect_peer, DEFVAL(1000), DEFVAL(""));
|
|
|
|
|
|
- ADD_SIGNAL(MethodInfo("client_disconnected", PropertyInfo(Variant::INT, "id")));
|
|
|
+ ADD_SIGNAL(MethodInfo("client_close_request", PropertyInfo(Variant::INT, "id"), PropertyInfo(Variant::INT, "code"), PropertyInfo(Variant::STRING, "reason")));
|
|
|
+ ADD_SIGNAL(MethodInfo("client_disconnected", PropertyInfo(Variant::INT, "id"), PropertyInfo(Variant::BOOL, "was_clean_close")));
|
|
|
ADD_SIGNAL(MethodInfo("client_connected", PropertyInfo(Variant::INT, "id"), PropertyInfo(Variant::STRING, "protocol")));
|
|
|
ADD_SIGNAL(MethodInfo("data_received", PropertyInfo(Variant::INT, "id")));
|
|
|
}
|
|
@@ -85,13 +86,18 @@ void WebSocketServer::_on_connect(int32_t p_peer_id, String p_protocol) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-void WebSocketServer::_on_disconnect(int32_t p_peer_id) {
|
|
|
+void WebSocketServer::_on_disconnect(int32_t p_peer_id, bool p_was_clean) {
|
|
|
|
|
|
if (_is_multiplayer) {
|
|
|
// Send delete to clients
|
|
|
_send_del(p_peer_id);
|
|
|
emit_signal("peer_disconnected", p_peer_id);
|
|
|
} else {
|
|
|
- emit_signal("client_disconnected", p_peer_id);
|
|
|
+ emit_signal("client_disconnected", p_peer_id, p_was_clean);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+void WebSocketServer::_on_close_request(int32_t p_peer_id, int p_code, String p_reason) {
|
|
|
+
|
|
|
+ emit_signal("client_close_request", p_peer_id, p_code, p_reason);
|
|
|
+}
|