summaryrefslogtreecommitdiff
path: root/modules/websocket/doc_classes/WebSocketClient.xml
blob: 1978d2e7c68bba10ea131fbe20eadf7a04a76c8a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<?xml version="1.0" encoding="UTF-8" ?>
<class name="WebSocketClient" inherits="WebSocketMultiplayerPeer" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../doc/class.xsd">
	<brief_description>
		A WebSocket client implementation.
	</brief_description>
	<description>
		This class implements a WebSocket client compatible with any RFC 6455-compliant WebSocket server.
		This client can be optionally used as a multiplayer peer for the [MultiplayerAPI].
		After starting the client ([method connect_to_url]), you will need to [method MultiplayerPeer.poll] it at regular intervals (e.g. inside [method Node._process]).
		You will receive appropriate signals when connecting, disconnecting, or when new data is available.
		[b]Note:[/b] When exporting to Android, make sure to enable the [code]INTERNET[/code] permission in the Android export preset before exporting the project or using one-click deploy. Otherwise, network communication of any kind will be blocked by Android.
	</description>
	<tutorials>
	</tutorials>
	<methods>
		<method name="connect_to_url">
			<return type="int" enum="Error" />
			<param index="0" name="url" type="String" />
			<param index="1" name="protocols" type="PackedStringArray" default="PackedStringArray()" />
			<param index="2" name="gd_mp_api" type="bool" default="false" />
			<param index="3" name="custom_headers" type="PackedStringArray" default="PackedStringArray()" />
			<description>
				Connects to the given URL requesting one of the given [code]protocols[/code] as sub-protocol. If the list empty (default), no sub-protocol will be requested.
				If [code]true[/code] is passed as [code]gd_mp_api[/code], the client will behave like a multiplayer peer for the [MultiplayerAPI], connections to non-Godot servers will not work, and [signal data_received] will not be emitted.
				If [code]false[/code] is passed instead (default), you must call [PacketPeer] functions ([code]put_packet[/code], [code]get_packet[/code], etc.) on the [WebSocketPeer] returned via [code]get_peer(1)[/code] and not on this object directly (e.g. [code]get_peer(1).put_packet(data)[/code]).
				You can optionally pass a list of [code]custom_headers[/code] to be added to the handshake HTTP request.
				[b]Note:[/b] To avoid mixed content warnings or errors in Web, you may have to use a [code]url[/code] that starts with [code]wss://[/code] (secure) instead of [code]ws://[/code]. When doing so, make sure to use the fully qualified domain name that matches the one defined in the server's TLS certificate. Do not connect directly via the IP address for [code]wss://[/code] connections, as it won't match with the TLS certificate.
				[b]Note:[/b] Specifying [code]custom_headers[/code] is not supported in Web exports due to browsers' restrictions.
			</description>
		</method>
		<method name="disconnect_from_host">
			<return type="void" />
			<param index="0" name="code" type="int" default="1000" />
			<param index="1" name="reason" type="String" default="&quot;&quot;" />
			<description>
				Disconnects this client from the connected host. See [method WebSocketPeer.close] for more information.
			</description>
		</method>
		<method name="get_connected_host" qualifiers="const">
			<return type="String" />
			<description>
				Returns the IP address of the currently connected host.
			</description>
		</method>
		<method name="get_connected_port" qualifiers="const">
			<return type="int" />
			<description>
				Returns the IP port of the currently connected host.
			</description>
		</method>
	</methods>
	<members>
		<member name="trusted_tls_certificate" type="X509Certificate" setter="set_trusted_tls_certificate" getter="get_trusted_tls_certificate">
			If specified, this [X509Certificate] will be the only one accepted when connecting to an TLS host. Any other certificate provided by the server will be regarded as invalid.
			[b]Note:[/b] Specifying a custom [code]trusted_tls_certificate[/code] is not supported in Web exports due to browsers' restrictions.
		</member>
		<member name="verify_tls" type="bool" setter="set_verify_tls_enabled" getter="is_verify_tls_enabled">
			If [code]true[/code], TLS certificate verification is enabled.
			[b]Note:[/b] You must specify the certificates to be used in the Project Settings for it to work when exported.
		</member>
	</members>
	<signals>
		<signal name="connection_closed">
			<param index="0" name="was_clean_close" type="bool" />
			<description>
				Emitted when the connection to the server is closed. [code]was_clean_close[/code] will be [code]true[/code] if the connection was shutdown cleanly.
			</description>
		</signal>
		<signal name="connection_error">
			<description>
				Emitted when the connection to the server fails.
			</description>
		</signal>
		<signal name="connection_established">
			<param index="0" name="protocol" type="String" />
			<description>
				Emitted when a connection with the server is established, [code]protocol[/code] will contain the sub-protocol agreed with the server.
			</description>
		</signal>
		<signal name="data_received">
			<description>
				Emitted when a WebSocket message is received.
				[b]Note:[/b] This signal is [i]not[/i] emitted when used as high-level multiplayer peer.
			</description>
		</signal>
		<signal name="server_close_request">
			<param index="0" name="code" type="int" />
			<param index="1" name="reason" type="String" />
			<description>
				Emitted when the server requests a clean close. You should keep polling until you get a [signal connection_closed] signal to achieve the clean close. See [method WebSocketPeer.close] for more details.
			</description>
		</signal>
	</signals>
</class>