0

I have my godot client setup like this:

tool
extends Node2D

var _client = WebSocketClient.new()
var err;

func _init():
    _client.connect("connection_closed", self, "_closed")
    _client.connect("connection_error", self, "_closed")
    _client.connect("connection_established", self, "_connected")
    _client.connect("data_received", self, "_on_data")

    err = _client.connect_to_url("ws://127.0.0.1:6000")
    print("err=",err)
    if err != OK:
        print("Unable to connect")
        set_process(false)

func _closed(was_clean = false):
    print("Closed, clean: ", was_clean)
    #set_process(false)

func _connected(proto = ""):
    print("Connected with protocol: ", proto)
    _client.get_peer(1).put_packet("Hello there".to_utf8())

func _on_data():
    print("Got data from server: ", _client.get_peer(1).get_packet().get_string_from_utf8())

func _process(delta):
    _client.poll()

as shown in this example

and I have my python side Server like this:

from socket import *
s= socket(AF_INET, SOCK_STREAM)
s.setsockopt(SOL_SOCKET,SO_REUSEADDR, 1)
s.bind(("127.0.0.1",6000))

while True:
    print("Waiting for connection...")
    try:
        s.listen()
        conn, addr = s.accept()
        print("Connection Established!")

        while True:
            data = conn.recv(1024).decode()
            if not data:
                break
            print("Sender Says :",data)
            conn.send("General Kenobi!".encode())
            
    except error:
        print("Connection Terminated! Restarting...")

but every time I try it gives this error

Condition "!is_connected_to_host()" is true. Returned: FAILED

I don't understand what I'm doing wrong?

cak3_lover
  • 1,440
  • 5
  • 26

1 Answers1

1

i gotten the websocket working it seems like your python code is only a tcp server go here to have a better understanding of websocket(Differences between TCP sockets and web sockets, one more time)Im also using python version 3.10.4. and Godot 3.5 the latest version. Also run the server first .

pip install simple-websocket-server

GODOT client CODE

extends Control


var _client = WebSocketClient.new()
var err;

func _init():
    _client.connect("connection_closed", self, "_closed")
    _client.connect("connection_error", self, "_closed")
    _client.connect("connection_established", self, "_connected")
    _client.connect("data_received", self, "_on_data")

    err = _client.connect_to_url("ws://127.0.0.1:8000")
    print("err=",err)
    if err != OK:
        print("Unable to connect")
        set_process(false)

func _closed(was_clean = false):
    print("Closed, clean: ", was_clean)
    #set_process(false)

func _connected(proto = ""):
    print("Connected with protocol: ", proto)
    _client.get_peer(1).put_packet("Hello there".to_utf8())

func _on_data():
    print("Got data from server: ", _client.get_peer(1).get_packet().get_string_from_utf8())

func _process(delta):
    _client.poll()

Python websocket server

from simple_websocket_server import WebSocketServer, WebSocket


class SimpleEcho(WebSocket):
    def handle(self):
        # echo message back to client
        self.send_message(self.data)

    def connected(self):
        print(self.address, 'connected')

    def handle_close(self):
        print(self.address, 'closed')


server = WebSocketServer('', 8000, SimpleEcho)
server.serve_forever()