summaryrefslogtreecommitdiff
path: root/modules/websocket/doc_classes/WebSocketServer.xml
blob: 7bc0d64718fc8cd08ccf507eee78ca936a7b0234 (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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
<?xml version="1.0" encoding="UTF-8" ?>
<class name="WebSocketServer" inherits="WebSocketMultiplayerPeer" version="4.0">
	<brief_description>
		A WebSocket server implementation.
	</brief_description>
	<description>
		This class implements a WebSocket server that can also support the high-level multiplayer API.
		After starting the server ([method listen]), you will need to [method NetworkedMultiplayerPeer.poll] it at regular intervals (e.g. inside [method Node._process]). When clients connect, disconnect, or send data, you will receive the appropriate signal.
		[b]Note:[/b] Not available in HTML5 exports.
	</description>
	<tutorials>
	</tutorials>
	<methods>
		<method name="disconnect_peer">
			<return type="void">
			</return>
			<argument index="0" name="id" type="int">
			</argument>
			<argument index="1" name="code" type="int" default="1000">
			</argument>
			<argument index="2" name="reason" type="String" default="&quot;&quot;">
			</argument>
			<description>
				Disconnects the peer identified by [code]id[/code] from the server. See [method WebSocketPeer.close] for more information.
			</description>
		</method>
		<method name="get_peer_address" qualifiers="const">
			<return type="String">
			</return>
			<argument index="0" name="id" type="int">
			</argument>
			<description>
				Returns the IP address of the given peer.
			</description>
		</method>
		<method name="get_peer_port" qualifiers="const">
			<return type="int">
			</return>
			<argument index="0" name="id" type="int">
			</argument>
			<description>
				Returns the remote port of the given peer.
			</description>
		</method>
		<method name="has_peer" qualifiers="const">
			<return type="bool">
			</return>
			<argument index="0" name="id" type="int">
			</argument>
			<description>
				Returns [code]true[/code] if a peer with the given ID is connected.
			</description>
		</method>
		<method name="is_listening" qualifiers="const">
			<return type="bool">
			</return>
			<description>
				Returns [code]true[/code] if the server is actively listening on a port.
			</description>
		</method>
		<method name="listen">
			<return type="int" enum="Error">
			</return>
			<argument index="0" name="port" type="int">
			</argument>
			<argument index="1" name="protocols" type="PackedStringArray" default="PackedStringArray()">
			</argument>
			<argument index="2" name="gd_mp_api" type="bool" default="false">
			</argument>
			<description>
				Starts listening on the given port.
				You can specify the desired subprotocols via the "protocols" array. If the list empty (default), no sub-protocol will be requested.
				If [code]true[/code] is passed as [code]gd_mp_api[/code], the server will behave like a network peer for the [MultiplayerAPI], connections from non-Godot clients 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(id)[/code] to communicate with the peer with given [code]id[/code] (e.g. [code]get_peer(id).get_available_packet_count[/code]).
			</description>
		</method>
		<method name="stop">
			<return type="void">
			</return>
			<description>
				Stops the server and clear its state.
			</description>
		</method>
	</methods>
	<members>
		<member name="bind_ip" type="String" setter="set_bind_ip" getter="get_bind_ip" default="&quot;*&quot;">
			When not set to [code]*[/code] will restrict incoming connections to the specified IP address. Setting [code]bind_ip[/code] to [code]127.0.0.1[/code] will cause the server to listen only to the local host.
		</member>
		<member name="ca_chain" type="X509Certificate" setter="set_ca_chain" getter="get_ca_chain">
			When using SSL (see [member private_key] and [member ssl_certificate]), you can set this to a valid [X509Certificate] to be provided as additional CA chain information during the SSL handshake.
		</member>
		<member name="handshake_timeout" type="float" setter="set_handshake_timeout" getter="get_handshake_timeout" default="3.0">
			The time in seconds before a pending client (i.e. a client that has not yet finished the HTTP handshake) is considered stale and forcefully disconnected.
		</member>
		<member name="private_key" type="CryptoKey" setter="set_private_key" getter="get_private_key">
			When set to a valid [CryptoKey] (along with [member ssl_certificate]) will cause the server to require SSL instead of regular TCP (i.e. the [code]wss://[/code] protocol).
		</member>
		<member name="ssl_certificate" type="X509Certificate" setter="set_ssl_certificate" getter="get_ssl_certificate">
			When set to a valid [X509Certificate] (along with [member private_key]) will cause the server to require SSL instead of regular TCP (i.e. the [code]wss://[/code] protocol).
		</member>
	</members>
	<signals>
		<signal name="client_close_request">
			<argument index="0" name="id" type="int">
			</argument>
			<argument index="1" name="code" type="int">
			</argument>
			<argument index="2" name="reason" type="String">
			</argument>
			<description>
				Emitted when a client requests a clean close. You should keep polling until you get a [signal client_disconnected] signal with the same [code]id[/code] to achieve the clean close. See [method WebSocketPeer.close] for more details.
			</description>
		</signal>
		<signal name="client_connected">
			<argument index="0" name="id" type="int">
			</argument>
			<argument index="1" name="protocol" type="String">
			</argument>
			<description>
				Emitted when a new client connects. "protocol" will be the sub-protocol agreed with the client.
			</description>
		</signal>
		<signal name="client_disconnected">
			<argument index="0" name="id" type="int">
			</argument>
			<argument index="1" name="was_clean_close" type="bool">
			</argument>
			<description>
				Emitted when a client disconnects. [code]was_clean_close[/code] will be [code]true[/code] if the connection was shutdown cleanly.
			</description>
		</signal>
		<signal name="data_received">
			<argument index="0" name="id" type="int">
			</argument>
			<description>
				Emitted when a new message is received.
				[b]Note:[/b] This signal is [i]not[/i] emitted when used as high-level multiplayer peer.
			</description>
		</signal>
	</signals>
	<constants>
	</constants>
</class>