Live data from Hacker News

Show HN: Pipe To Me – Stream data over HTTP using curl

github.com

1–10 of 14 posts

Re: Show HN: Pipe To Me – Stream data over HTTP using curl

#2
Awesome. I would use this as shared clipboard. Immediately made bash functions for myself :)

pipefrom() { local key=${1:?"Error: Missing pipe key"}; curl -s https://pipeto.me/$key; }

pipeto() { local key=${1:?"Error: Missing pipe key"}; curl -T- -s https://pipeto.me/$key; }

Re: Show HN: Pipe To Me – Stream data over HTTP using curl

#4
post #3

Would there be no way for the server to indicate over HTTP to curl that it is not ready to receive until the receiver has connected? Then curl might be able to wait until it reads from the pipe.

Hello, Author here. I toyed around with the idea of not allowing the sender to connect until a receiver was connected, but I could see the use case where you wrote a stream to nowhere and then had receivers jump in and out.

I also toyed around with using the "-T." curl argument instead of "-T-" to allow some response in this case, but I came up against a known issue in curl (https://github.com/curl/curl/issues/932). I'm sure this wasn't the intended use case though.

It is definitely worth exploring further.

Re: Show HN: Pipe To Me – Stream data over HTTP using curl

#5
post #3

Would there be no way for the server to indicate over HTTP to curl that it is not ready to receive until the receiver has connected? Then curl might be able to wait until it reads from the pipe.

tl;dr Yes an HTTP mechanism exists, if you use curl --expect100-timeout=

The HTTP request header Expect: 100-Continue and HTTP response status 100 Continue informs the client that the server desires to receive the request body.

However, many servers don't support it, and curl proceeds anyway if there is no Continue response after 1000ms. This timeout was originally fixed [1], but since curl 7.47.0 can be adjusted via --expect100-timeout.

[1] https://curl.haxx.se/mail/lib-2010-01/0182.html

Re: Show HN: Pipe To Me – Stream data over HTTP using curl

#7
post #6

how does it update without javascript?

The browser will start displaying the contents of a response before it has entirely downloaded. So in this case the browser sees it as a really slow server (you can see the loading icon is still there in the demo) that sends a bit of content every so often

Re: Show HN: Pipe To Me – Stream data over HTTP using curl

#8
post #3

Would there be no way for the server to indicate over HTTP to curl that it is not ready to receive until the receiver has connected? Then curl might be able to wait until it reads from the pipe.

Hello, Author here. I toyed around with the idea of not allowing the sender to connect until a receiver was connected, but I could see the use case where you wrote a stream to nowhere and then had receivers jump in and out. I also toyed around with using the "-T." curl argument instead of "-T-" to allow some response in this case, but I came up against a known issue in curl ( https://github.com/curl/curl/issues/932 )…

That is interesting. What made you stay away from returning an error if someone tries to post without a receiver?

Re: Show HN: Pipe To Me – Stream data over HTTP using curl

#10
post #8

Earlier quoted context omitted.

Hello, Author here. I toyed around with the idea of not allowing the sender to connect until a receiver was connected, but I could see the use case where you wrote a stream to nowhere and then had receivers jump in and out. I also toyed around with using the "-T." curl argument instead of "-T-" to allow some response in this case, but I came up against a known issue in curl ( https://github.com/curl/curl/issues/932 )…

That is interesting. What made you stay away from returning an error if someone tries to post without a receiver?

I may end up re-thinking this, but one idea was that you could temporarily `tail -f` a log file into a pipe and then check up on it later via a mobile browser. It could be writing the whole time, but just dropping everything when you weren't watching it.

It would probably also make more sense if I were to add some kind of buffering or storage in the future.

Post reply on HN