Last active
February 22, 2019 09:02
-
-
Save v-ko/bbc4daa3382141cef1ad9de1909160bb to your computer and use it in GitHub Desktop.
An example python3 host for exchanging native messages with a Google Chrome extension
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
import os, sys, struct | |
def read_message(): | |
text_length_bytes = sys.stdin.buffer.read(4) | |
if len(text_length_bytes) == 0: | |
sys.exit(0) | |
# Unpack message length as 4 byte integer. | |
text_length = struct.unpack('i', text_length_bytes)[0] | |
# Read the text (JSON object) of the message. | |
text = sys.stdin.buffer.read(text_length).decode('utf-8') | |
return text | |
def send_message(message): | |
# Write message size. | |
sys.stdout.buffer.write(struct.pack('I', len(message))) | |
# Write the message itself. | |
sys.stdout.buffer.write(bytes(message,'utf-8')) | |
sys.stdout.flush() | |
def send_text_message(text): | |
send_message('{"text":"'+text+'"}') | |
def main(arguments): | |
sys.stderr.write("Started echo host\n") | |
sys.stderr.flush() | |
while True: | |
message = read_message() | |
if message: | |
sys.stderr.write("Received message:"+message+"\n") | |
sys.stderr.flush() | |
send_message(message.strip()) | |
if __name__ == '__main__': | |
sys.exit(main(sys.argv[1:])) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment