#google-chrome #google-chrome-extension #chrome-native-messaging
#google-chrome #google-chrome-extension #chrome-native-messaging
Вопрос:
Я пытаюсь отправить список массивов из расширения Chrome в мое родное приложение Python, используя собственный API обмена сообщениями.
background_script.js
port = window.browser.runtime.connectNative(hostName);
port.postMessage(request.attributes);
my_app.py
text_length_bytes = sys.stdin.read(4)
text_length = struct.unpack('i', bytes(text_length_bytes, 'utf-8'))[0]
text = sys.stdin.read(text_length)
Соединение между расширением Chrome и собственным приложением Python прекращается, когда я отправляю список массивов в качестве атрибута в сообщении post, но оно работает, когда я указываю строку в качестве атрибута.
Комментарии:
1. Посмотрите, что на самом деле было отправлено с помощью console.log(JSON.stringify(request.attributes))
2. Это отправка списка списков
3. Пример, приведенный в документации,
text = sys.stdin.read(text_length).decode('utf-8')
— в вашем коде отсутствует вызов decode.4. Я выполнил декодирование здесь text_length = struct.unpack(‘i’, байты(text_length_bytes, ‘utf-8’))[0]
5. Вы только расшифровали длину.