Replies: 29 comments
-
Yes, this is planned. No ETA yet, but it will be probably added in 1.1 or 1.2. |
Beta Was this translation helpful? Give feedback.
-
i am curious, ... would you be using libssh or libssh2? |
Beta Was this translation helpful? Give feedback.
-
oh.. i think, your client is python.. so i'm not sure if my previous question makes sense.. but thanks. |
Beta Was this translation helpful? Give feedback.
-
+1 to this idea! |
Beta Was this translation helpful? Give feedback.
-
this would make possible to use asciinema as terminal cctv (aka session logging) 👍 |
Beta Was this translation helpful? Give feedback.
-
Here is the start of a work plan for this issue.
Additionally, some further add-on work might be warranted after this is done. I am listing it here for fun, but this should be outside the scope of this issue and will need new issues if anyone is interested.
|
Beta Was this translation helpful? Give feedback.
-
OMG! This is amazing! Would love to see this! I teach a bioinformatics class at Fred Hutch Cancer Research Center, and would love to have my helper live stream their screen so attendees could debug more effectively (projector screen generally taken up with slides, and we found switching between slides and terminal troublesome). I mention the cancer research thing because I am absolutely trying to guilt you into helping me teach biologists how to analyze their data more effectively so we can cure cancer. No pressure or anything though ;-) |
Beta Was this translation helpful? Give feedback.
-
@metasoarous While this is an awesome feature that asciinema needs. You can still setup something like: attendees |
Beta Was this translation helpful? Give feedback.
-
Oooo... guilt-trip ricochet... We actually learn tmux in the class already actually, so it's not too far-fetched to imagine doing that. But it is certainly quite a bit of extra setup and I've found for folks new to tech it's best to minimize as much of that incidental complexity as possible. Having them hit a link (or better an embed on the class homepage) would be gold. Of course, I respect that the bullet points above constitute no small amount of work :-) In any case, I'm mostly just trying to lend encouragement and motivation. Wish I had the bandwidth to help (especially since cljs) :-) |
Beta Was this translation helpful? Give feedback.
-
Part of the work on live streaming is already done - the web player can now play from Websocket stream. I'm working on the server part now (serving persistent connections etc). |
Beta Was this translation helpful? Give feedback.
-
Wonderful! Great to hear. You are saving lives, good sir. |
Beta Was this translation helpful? Give feedback.
-
also i want to mention that someone (and me too) may want this stream self hosted |
Beta Was this translation helpful? Give feedback.
-
Just checking if there has been any progress on this? This is absolutely not a life-or-death feature for me, I've just got a couple of cool ideas to play around with should this feature ever get implemented 😉 |
Beta Was this translation helpful? Give feedback.
-
+1, looking forward to this :) |
Beta Was this translation helpful? Give feedback.
-
What's the state of this feature request? Something secure to stream a terminal over http should be great! |
Beta Was this translation helpful? Give feedback.
-
+1 I have a few projects that would be perfect for a feature like this! @sickill is there an update to this? |
Beta Was this translation helpful? Give feedback.
-
I'd love to see this feature in
Does that mean the full recording JSON object gets replaced on each change? I miss being able to use my recordings on disk in a "live stream" fashion. As you know, the current format can't support live-streams in itself because the entire recording needs to be serialized as a complete JSON object. So how invasive is it to split it into multiple JSON objects? Going from this:
To something like this:
Would allow live recordings without any special tooling. A host could send his recording live like this:
And a client could watch with For the web, recordings could be served from disk and Chunked transfer encoding could be used for transferring incomplete/live files. Now, in the eyes of curl, a live recording is no different from a finished one:
I don't know how difficult it is to work with Chunked transfer encoding in your javascript player. It shouldn't be more complicated than WebSockets, though. While it's never fun to change the on-disk-format, it would make streaming a "first class citizen" in asciinema. And may require less special attention from the tooling around, and it certainly makes it possible to deal with live streams from outside of asciinema, which is currently not the case. I don't know how intrusive any of this would be on your codebase, though! |
Beta Was this translation helpful? Give feedback.
-
Just like I though - ignore me! :) Everything is covered in asciinema/asciinema#196. Glad to know we're on the same page, at least :) |
Beta Was this translation helpful? Give feedback.
-
Hi, is there any documentation on how to do this with the web player? Assumming we code our own server. Thanks. |
Beta Was this translation helpful? Give feedback.
-
We replicated this at KloudTrader using gotty and screen: https://github.com/yudai/gotty/pull/209/files Throw in a NAT puncher like Ngrok and you get terminal live stream. Considering spinning this into a service if anyone's interested. |
Beta Was this translation helpful? Give feedback.
-
I ended up using shellinabox and tmux, I guess it's pretty similar to your solution there :) |
Beta Was this translation helpful? Give feedback.
-
this issue is from 2015. any updates when this feature would be available? |
Beta Was this translation helpful? Give feedback.
-
Good day, everyone! I was thinking of having the feature to live cast my terminal over a local network (i.e. using the machine with the terminal as a server). So, firstly, I would like to know if it is consistent with the view of other users and developers/maintainers (@sickill), or is there some conceptual problem about that. Secondly, I would like to have advise from someone more experienced in all that networking thing: if I decide to work on that, what kind of way should I use to communicate between recorder and players? Would it be good to use something as low-level as sockets? Is there a higher-level protocol for transferring text, where I need not worry about clients connecting/disconnecting and all the lowest-level stuff? Should I stick to something HTTP-compatible (maybe so that the code can be reused when implementing casting through asciinema.org)? Please, share your suggestions! Thank you in advance. |
Beta Was this translation helpful? Give feedback.
-
At first I thought using websockets would be a good idea as it is not super low-level and the code could've been reused for the implementation of broadcasting through the server, but then I noticed asciinema does not have any dependencies, and this feature probably is not one you would want to first introduce them. But the only suitable way I know with the standard python is the |
Beta Was this translation helpful? Give feedback.
-
@kolayne, you should probably use a standard RPC library (Cap'n Proto, gRPC, etc.). You get a nicer interface, support many languages and is easier to maintain. Using low level socket manually and then building the protocol on top of it will most likely be a maintenance burden later. |
Beta Was this translation helpful? Give feedback.
-
@gpollo, thank you for your reply! There is, however, one more problem that I forgot to mention above (in fact, I only noticed it a few days ago, I didn't know about it when writing the previous comment): asciinema is pure-python and doesn't have any external dependencies. And, as the maintainer does not answer so far, I only get to guess, but if I was him, I don't think I would be happy to introduce the first project dependency for this (non-core) kind of feature. I guess, a way to go is to make this an optional dependency, and only enable this feature if the corresponding libraries are installed... But that still breaks that nice "asciinema works without dependencies!" thing. Anyway, are you aware of anything higher-level than pure sockets, that is supported in the python standard library? |
Beta Was this translation helpful? Give feedback.
-
@kolayne, I'm not the maintainer, but I do believe an optional dependency is 100% the way to go. Adding a dependency should not prevent a feature from being implemented, especially if it can be optional. Doing it with low-level socket or a pure Python implementation will be reinventing the wheel at some point. |
Beta Was this translation helpful? Give feedback.
-
I request (if possible) for asciicast to able to broadcast in live realtime our asciicast terminal session. If this is not possible, i like to hear why. Thanks.
Beta Was this translation helpful? Give feedback.
All reactions