Клиент Websocket не получает данные - PullRequest
0 голосов
/ 08 октября 2019

У меня странная проблема. После прочтения о websocket-клиенте, кажется, довольно просто, отправлять данные через websocket.send() и получать через recv().

Я настроил websocket для чтения и отправки двоичного файла. Ниже приведены коды

ws = websocket.WebSocket()
ws.connect(uri)

text_list = list()

# setup the receiving portion
receiving_tread = threading.Thread(target=thread_receiving, args=(ws, text_list))
receiving_tread.start()

ws.send_binary([48])  # telling server file has started

f = open(binary_file, 'rb')

chunk = f.read(8000)

while chunk != b'':
    ws.send(chunk)

    time.sleep(0.5)
    chunk = f.read(8000)

ws.send_binary([49]) # tell server file has ended

Процесс получения данных:

def thread_receiving(ws, text_list):
    data = json.loads(ws.recv())
    text_list.append(data)

Я знаю, что данные отправляются, потому что я получаю первую часть возвращаемых данных, а затем останавливается. Так что я получаю только 1 возврат, и как-то recv() перестает слушать. Примечание. У меня нет доступа к серверу или к веб-сокету сервера, поэтому мне приходится устранять неполадки со стороны клиента.

Может кто-нибудь сказать мне, что я делаю неправильно?

1 Ответ

0 голосов
/ 09 октября 2019

Хорошо, я нашел ответ, похоже, что принимающая функция завершает работу после запуска. Таким образом, мы должны поддерживать его работу.

Следовательно,

def thread_receiving(ws, text_list):
    data = json.loads(ws.recv())

    while len(data) > 0
        text_list.append(data)
        data = json.loads(ws.recv())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...