a8950f98dd
This commit is a huge refactor of the websocket module. The module is really old, and some design choices had to be re-evaluated. The WebSocketClient and WebSocketServer classes are now gone, and WebSocketPeer can act as either client or server. The WebSocketMultiplayerPeer class is no longer abstract, and implements the Multiplayer API on top of the lower level WebSocketPeer. WebSocketPeer is now a "raw" peer, like StreamPeerTCP and StreamPeerTLS, so it emits no signal, and just needs polling to update its internal state. To use it as a client, simply call WebSocketPeer.coonect_to_url, then frequently poll the peer until STATE_OPEN is reached and then you can write or read from it, or STATE_CLOSED and then you can check the disconnect code and reason). To implement a server instead, a TCPServer must be created, and the accepted connections needs to be provided to WebSocketPeer.accept_stream (which will perform the HTTP handshake). A full example of a WebSocketServer using TLS will be provided in the demo repository.
92 lines
5.0 KiB
XML
92 lines
5.0 KiB
XML
<?xml version="1.0" encoding="UTF-8" ?>
|
|
<class name="WebSocketMultiplayerPeer" inherits="MultiplayerPeer" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../doc/class.xsd">
|
|
<brief_description>
|
|
Base class for WebSocket server and client.
|
|
</brief_description>
|
|
<description>
|
|
Base class for WebSocket server and client, allowing them to be used as multiplayer peer for the [MultiplayerAPI].
|
|
[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="close">
|
|
<return type="void" />
|
|
<description>
|
|
Closes this [MultiplayerPeer], resetting the state to [constant MultiplayerPeer.CONNECTION_CONNECTED].
|
|
[b]Note:[/b] To make sure remote peers receive a clean close prefer disconnecting clients via [method disconnect_peer].
|
|
</description>
|
|
</method>
|
|
<method name="create_client">
|
|
<return type="int" enum="Error" />
|
|
<param index="0" name="url" type="String" />
|
|
<param index="1" name="verify_tls" type="bool" default="true" />
|
|
<param index="2" name="tls_certificate" type="X509Certificate" default="null" />
|
|
<description>
|
|
Starts a new multiplayer client connecting to the given [param url]. If [param verify_tls] is [code]false[/code] certificate validation will be disabled. If specified, the [param tls_certificate] will be used to verify the TLS host.
|
|
[b]Note[/b]: It is recommended to specify the scheme part of the URL, i.e. the [param url] should start with either [code]ws://[/code] or [code]wss://[/code].
|
|
</description>
|
|
</method>
|
|
<method name="create_server">
|
|
<return type="int" enum="Error" />
|
|
<param index="0" name="port" type="int" />
|
|
<param index="1" name="bind_address" type="String" default=""*"" />
|
|
<param index="2" name="tls_key" type="CryptoKey" default="null" />
|
|
<param index="3" name="tls_certificate" type="X509Certificate" default="null" />
|
|
<description>
|
|
Starts a new multiplayer server listening on the given [param port]. You can optionally specify a [param bind_address], and provide a [param tls_key] and [param tls_certificate] to use TLS.
|
|
</description>
|
|
</method>
|
|
<method name="disconnect_peer">
|
|
<return type="void" />
|
|
<param index="0" name="id" type="int" />
|
|
<param index="1" name="code" type="int" default="1000" />
|
|
<param index="2" name="reason" type="String" default="""" />
|
|
<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" qualifiers="const">
|
|
<return type="WebSocketPeer" />
|
|
<param index="0" name="peer_id" type="int" />
|
|
<description>
|
|
Returns the [WebSocketPeer] associated to the given [code]peer_id[/code].
|
|
</description>
|
|
</method>
|
|
<method name="get_peer_address" qualifiers="const">
|
|
<return type="String" />
|
|
<param index="0" name="id" type="int" />
|
|
<description>
|
|
Returns the IP address of the given peer.
|
|
</description>
|
|
</method>
|
|
<method name="get_peer_port" qualifiers="const">
|
|
<return type="int" />
|
|
<param index="0" name="id" type="int" />
|
|
<description>
|
|
Returns the remote port of the given peer.
|
|
</description>
|
|
</method>
|
|
</methods>
|
|
<members>
|
|
<member name="handshake_headers" type="PackedStringArray" setter="set_handshake_headers" getter="get_handshake_headers" default="PackedStringArray()">
|
|
The extra headers to use during handshake. See [member WebSocketPeer.handshake_headers] for more details.
|
|
</member>
|
|
<member name="handshake_timeout" type="float" setter="set_handshake_timeout" getter="get_handshake_timeout" default="3.0">
|
|
The maximum time each peer can stay in a connecting state before being dropped.
|
|
</member>
|
|
<member name="inbound_buffer_size" type="int" setter="set_inbound_buffer_size" getter="get_inbound_buffer_size" default="65535">
|
|
The inbound buffer size for connected peers. See [member WebSocketPeer.inbound_buffer_size] for more details.
|
|
</member>
|
|
<member name="max_queued_packets" type="int" setter="set_max_queued_packets" getter="get_max_queued_packets" default="2048">
|
|
The maximum number of queued packets for connected peers. See [member WebSocketPeer.max_queued_packets] for more details.
|
|
</member>
|
|
<member name="outbound_buffer_size" type="int" setter="set_outbound_buffer_size" getter="get_outbound_buffer_size" default="65535">
|
|
The outbound buffer size for connected peers. See [member WebSocketPeer.outbound_buffer_size] for more details.
|
|
</member>
|
|
<member name="supported_protocols" type="PackedStringArray" setter="set_supported_protocols" getter="get_supported_protocols" default="PackedStringArray()">
|
|
The supported WebSocket sub-protocols. See [member WebSocketPeer.supported_protocols] for more details.
|
|
</member>
|
|
</members>
|
|
</class>
|