From 410c2852b2590f5999f7c8d7acd5a27c21f43865 Mon Sep 17 00:00:00 2001 From: Greenscreener Date: Tue, 18 Jul 2023 18:02:02 +0200 Subject: [PATCH] =?UTF-8?q?Resolve=20#20:=20Na=20katex-server=20=C4=8Dek?= =?UTF-8?q?=C3=A1me=20pomoc=C3=AD=20stdoutu.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/formatitko/katex-server/index.mjs | 1 + src/formatitko/katex.py | 20 +++++++------------- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/src/formatitko/katex-server/index.mjs b/src/formatitko/katex-server/index.mjs index 6beddf2..ecb4675 100644 --- a/src/formatitko/katex-server/index.mjs +++ b/src/formatitko/katex-server/index.mjs @@ -41,6 +41,7 @@ if (!unixSocketPath) { // This server listens on a Unix socket at /var/run/mysocket var unixServer = net.createServer(handleClient); unixServer.listen(unixSocketPath); +console.log("OK") function handleExit(signal) { // unixServer.emit('close') diff --git a/src/formatitko/katex.py b/src/formatitko/katex.py index 4470e7f..fc9ed4f 100644 --- a/src/formatitko/katex.py +++ b/src/formatitko/katex.py @@ -28,22 +28,16 @@ class KatexClient: raise Exception("npm not found. Node.js is required to use KaTeX.") else: raise e - self._server_process = subprocess.Popen(["node", srcdir + "/katex-server/index.mjs", self._socket_file]) - self._client = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + self._server_process = subprocess.Popen(["node", srcdir + "/katex-server/index.mjs", self._socket_file], stdout=subprocess.PIPE) - # Wait for the node program to create the socket file - while not os.path.exists(self._socket_file): - time.sleep(0.01) + self._client = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + + ok = self._server_process.stdout.readline() + if ok != b"OK\n": + raise Exception("Failed to connect to katex-server") - # Wait for the node program to start accepting connections - while True: - try: - self._client.connect(self._socket_file) - time.sleep(0.01) - except ConnectionRefusedError: - continue - break + self._client.connect(self._socket_file) def render(self, tex: str, options: Dict={}): # Send formulas to translate