UPDATE
I posted this before testing out an older version of godot and it seems to work just great! But as in the github issue, that is because of changes with how the protocols worked and what headers are sent!
Here is the code for use in Godot 3.1.1:
extends Node
var _client = WebSocketClient.new()
func _ready():
print("connecting...")
_client.connect("connection_closed", self, "ws_closed")
_client.connect("connection_error", self, "ws_connection_error")
_client.connect("connection_established", self, "ws_connection_established")
_client.connect("server_close_request", self, "ws_close_request")
_client.connect_to_url("wss://ws.revolt.chat/?version=1&format=json&token={token}")
func ws_closed(clean):
if !clean:
print("websocket closed")
else:
print("websocket closed cleanly")
func ws_connection_error():
print("websocket connection failed")
func ws_connection_established(protocol):
print("we're connected using protocol: ", protocol)
func ws_close_request(code, reason):
print("closed with code: ", code, " and reason: ", reason)
func _process(delta):
if _client.get_connection_status() == WebSocketClient.CONNECTION_DISCONNECTED:
return
print(_client.get_peer(1).get_packet().get_string_from_utf8())
_client.poll()
I wouldn't have gotten here without doing almost all of the previous steps. I even learned a lot about Godot and other libraries.
To solve this issue, go to
PROJECT SETTINGS -> NETWORK -> LIMITS -> Max In Buffer (KB) & Max Out Buffer (KB) to a generous 1024 AND (I think) set Max Buffer (Power of 2) to a whopping 256
.