abiosoft / ishell

Library for creating interactive cli applications.
MIT License
1.67k stars 197 forks source link

QUESTION - How to print prompt back after getting async message #140

Open paulosimao opened 3 years ago

paulosimao commented 3 years ago

Hi!

I have the following use case:

I setup an ishell session to interact w server. But server can send messages ad-hoc, not only response to commands. In case I get a message from server in the session which is related to a server event (not in response to a command issued by user), I want it do be printed, and the prompt should be shown just after. This is not the situation I get these days - prompt only shows up again if I touch the keyboard (even the right arrow would show the prompt again). Could you help me to figure out how to fix this? This is not a breaking issue for me, but not as good as I would like it to get.

If I was capable of signaling the shell that output has been added, that would be perfect.

Please note I am writing to the screen using Shell.println - never directly through Stdout.

Thanks in advance.

DriftSec commented 3 years ago

I am in the exact same situation. Any luck figuring this out?

paulosimao commented 3 years ago

So far, the best I could do is: I moved from the command line to a simple web app (thus no longer using ishell), but I would like to move back to it later.

shadowshot-x commented 2 years ago

I am not sure how you are handling ad-hoc messages from server. I am aware of using sockets with command line. If you use sockets, whenever you receive a message, an event function can be trigerred and you can pass the ishell context to this. Then you can call Shell.println in this function as needed.