Uncaught DOMException: не удалось выполнить 'send' на 'WebSocket': все еще в состоянии CONNECTING - PullRequest
0 голосов
/ 05 марта 2020

Я видел много тем, но ни одна из них не решила мою проблему

Привет, я новичок в Javascript программировании. Я пытаюсь создать систему клиент / сервер и, как следует из названия, у меня проблемы. Я создал клиент Javascript, взаимодействующий с сервером Python через WebSocket. Клиент выглядит так:

var ip = "127.0.0.1";
var port = "8888";



console.log('trying to connect to the server');
var ws = new WebSocket("ws://"+ip+":"+port);



ws.onmessage = function(event) {
  console.log("onmessage event: "+event.data);
}
ws.onopen = function() {
  ws.send("test");
}
ws.onclose = function() {
  console.log("closed");
}
ws.onerror = function() {
  console.log("error");
}

function sendImage() {
    if(ws.readyState === WebSocket.CONNECTING){
        console.log("connecting state");
    } 

    else{ if(ws.readyState === WebSocket.OPEN){
        ws.send("hello world !");

        }
    }
}

Я включил этот код в страницу HTML, которая вызывает функцию sendImage() при каждом нажатии кнопки.

<button onclick="sendImage()" id="pressButton" class="btn btn-primary rounded-pill">See how you're looking !</button>

Как написано в sendImage() клиент ожидает, когда сокет будет в состоянии OPEN. Однако этого не происходит, WebSocket всегда находится в состоянии CONNECTING. Естественно, если я удаляю условия в sendImage() и просто пишу ws.send("hello world !");, я получаю следующую ошибку:

Uncaught DOMException: Failed to execute 'send' on 'WebSocket': Still in CONNECTING state

Мой вопрос Почему мой WebSocket всегда находится в состоянии СОЕДИНЯТЬ?

Для тех, кто спрашивает, мой Python сервер выглядит следующим образом:

import socket
import os
import logging

PORT = 8888
connexion = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connexion.bind(("",PORT))
connexion.listen(5)
print("currently using port %i" % PORT)
print("listening...")
connexionClient, infoConnexion = connexion.accept()
os.system("date")
print("client connected on port %i" %PORT)
received_message = b""

while(received_message != b"end"):
    print("waiting for a message...")
    received_message = connexionClient.recv(1024)
    print("message received")
    decoded = received_message.decode()
    print("message",decoded)

Заранее спасибо, что нашли время ответить на этот топи c

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...