proc setupSender(commChan: var Channel[string]): Thread[ptr Channel[string]] = echo "Type in a message to send to the Backend!" proc sendMsg(commChan: ptr Channel[string]) = when true: let terminalInput = "Hello world" echo "Sending message from frontend from thread ", getThreadId(), ": ", terminalInput commChan[].send(terminalInput) createThread(result, sendMsg, commChan.addr) proc setupReceiver(commChan: var Channel[string]): Thread[ptr Channel[string]] = proc recvMsg(commChan: ptr Channel[string]) = when true: let msg: string = commChan[].recv() echo "Received message at backend on thread ", getThreadId(), ": ", msg createThread(result, recvMsg, commChan.addr) proc main() = var commChan: Channel[string] commChan.open() let sender = setupSender(commChan) receiver = setupReceiver(commChan) joinThreads(sender, receiver) main()