Possibly this approach. Each party should run one sender and one receiver. A sender may be preceded by
while IFS= read -r message; do printf 'nickname: %s\n' "$message" |
. A receiver may be piped to ts
(timestamp). An approach where one socat
(per party) is both a sender and a receiver is possible (e.g. UDP-DATAGRAM
with both ports equal), but you will still want to use different ttys for input and output, to prevent incoming messages from interfering with what you type.