Warum funktioniert mein Websockets- Server nicht?
Hallo,
ich möchte mithilfe von Websockets über JS auf Python zugreifen, das ist mein Code:
Python:
def send_message_to_browser(message):
url = "http://localhost:8000/?wake_word=luna"
try:
response = requests.get(url)
if response.status_code == 200:
print("Nachricht an den Browser gesendet:", message)
else:
print("Fehler beim Senden der Nachricht an den Browser")
except requests.RequestException as e:
print("Fehler beim Senden der Nachricht an den Browser:", e)
JavaScript:
// WEBSOCKET
var socket = new WebSocket('ws://localhost:8000/?wake_word=luna');
// Debugging-Ausgabe zur Überprüfung der Verbindung
console.log("WebSocket wird hergestellt...");
// Ereignisbehandlungsfunktion für Verbindungsherstellung
socket.onopen = function(event) {
// Debugging-Ausgabe zur Bestätigung der erfolgreichen Verbindung
console.log("WebSocket-Verbindung hergestellt.");
};
// Ereignisbehandlungsfunktion für Nachrichtenempfang
socket.onmessage = function(event) {
// Nachricht vom Server erhalten
var message = event.data;
// Debugging-Ausgabe
console.log("Nachricht empfangen:", message);
// Überprüfen, ob die empfangene Nachricht "luna" ist
if (message === "luna") {
// Ändern der Hintergrundfarbe der Div mit der ID "luna_wake_word" auf Rot
$('#luna_wake_word').css("background-color", "red");
}
};
// Fehlerbehandlungsfunktion für WebSocket-Verbindung
socket.onerror = function(error) {
console.error('WebSocket Error: ', error);
};
// Schließen der WebSocket-Verbindung
function closeWebSocket() {
socket.close();
}
Doch immer, wenn ich das Programm starte und in die Konsole schaue kommt dieser Fehler:
WebSocket wird hergestellt...
index.html?_ijt=bj6j8vutnl8e16bhrbgfck9djq&_ij_reload=RELOAD_ON_SAVE:1929 WebSocket connection to 'ws://localhost:8000/?wake_word=luna' failed:
(anonym) @ index.html?_ijt=bj6j8vutnl8e16bhrbgfck9djq&_ij_reload=RELOAD_ON_SAVE:1929
index.html?_ijt=bj6j8vutnl8e16bhrbgfck9djq&_ij_reload=RELOAD_ON_SAVE:1957 WebSocket Error: Event {isTrusted: true, type: 'error', target: WebSocket, currentTarget: WebSocket, eventPhase: 2, …}
Kann mir jemand helfen?
Freundliche Grüsse
1 Antwort
Hast du das mit ChatGPT geschrieben?
Das kann nicht funktionieren. In Python schickst du eine GET-Request an einen Server auf dem lokalen Port 8000. In JavaScript öffnest du eine neue Websocket-Verbindung, ebenfalls zum lokalen Port 8000. Sprich: Beide fungieren als Client. Da stellt sich die Frage, wo der Server denn ist. Ich vermute mal, auf Port 8000 läuft gar nichts.
In einem Browser kannst du keinen Server laufen lassen, da du dort auf keine Ports hören kannst. Heisst: du musst in Python einen Websocket-Server implementieren, keinen Client. Zum Beispiel mit dem hier: https://pypi.org/project/websockets/
Dein Browser verbindet sich dann auf deinen Server und dann kann der Server dem Browser Nachrichten schicken und umgekehrt.
Der JS Code sieht in Ordnung aus (habs aber natürlich nicht getestet). Aber in Python hat dir ChatGPT einfach eine banale HTTP-Request geschrieben. Da brauchst du einen Websocket Server, keinen Client.
Ich habe es jetzt ganz einfach mit Flask gemacht. Jetzt funktioniert alles. Vielen Dank trotzdem!
Vielen Dank für deine Antwort! Ja, ich habe es mit ChatGPT gschrieben, da ich diese Arbeit bald abgeben muss und nicht mehr genug Zeit habe, das alles zu lernen. Daher wurde mir vorgeschlagen es mit ChatGPT zu machen. Also ist der JS Code i.o. und der Python Code ist falsch oder ist beides falsch?