snapdrop
snapdrop copied to clipboard
Server issue (Not a complain, a query)
Right now as I am writing this, snapdrop.net isn't working with the error being The Snapdrop-Server cannot be reached.
This isn't a complain, I just wanna learn what does it mean exactly? What server is snapdrop talking about?
Would also appreciate if someone could explain how WebRTC works in a nutshell.
Also for me, very strage... Waiting that the problem is solved, meanwhile you can try using my Node.js version here: https://node-snapdrop.onrender.com/
@RobinLinus is there any other strange server error causing this issue?
Also if you'd prefer a server independent version you can use my desktop version node-snapdrop-electron
Update
Seems Snapdrop is working properly now!
Snapdrop is still down :/
It does seem to be down again. I wonder what keeps causing it to go down. Edit: It is up again
Seems to be up another time for me
@Bellisario looks like the fix made it worse, no?
looks like the fix made it worse, no?
Probably same as before... Nevertheless rather unsatisfactory unfortunately :-/
@Bellisario looks like the fix made it worse, no?
Yes, it looks like that's not solving the problem... I think in this case the best solution could be (for now) to use something like pm2 to restart the server on crash (or something similar with Docker).
As snapdrop.net is frequently not available (just have a look at the issues 😱), is there anything that we can do to improve the stability of the service? What are the actual reasons for the recurring downtimes? Could you please share some more details @RobinLinus?
@svenjacobs looks like the server breaks whenever there is too much load. Also someone keeps trying to DoS the Snapdrop server. We started to port it to Rust for better stability and performance https://github.com/RobinLinus/snapdrop/pull/521
Down again.
$ curl --include https://snapdrop.net/
curl: (7) Failed to connect to snapdrop.net port 443 after 39 ms: Connection refused
hi @RobinLinus ,This server problem you mention is related to the loading of the page? what about giving pwa offline capability to the page? could it work to solve this problem?
no matter what you do to the client side you will always need a running server for Snapdrop to work. This includes the (already implemented) offline capabality by caching as PWA via serviceworker.
The domain is registered for Domain.com, and their DDoS protection is $15 a month. Maybe we could donate towards it?
The domain is registered for Domain.com, and their DDoS protection is $15 a month. Maybe we could donate towards it?
I guess before paying for DDoS protection, we could first deploy snapdrop containerized as @Bellisario suggested with pm2 or docker. I provided two PRs that modify the docker configuration a bit to enable the use of the provided docker-compose on production #550 #549 @RobinLinus what do you think? Could you deploy snapdrop dockerized to increase stability?
the best solution could be (for now) to use something like pm2 to restart the server on crash (or something similar with Docker).
Here's a dependency-free alternative :
process.on(
'uncaughtException',
() => {
process.once(
'exit',
() => spawn(
process.argv.shift(),
process.argv,
{
cwd: process.cwd(),
detached: true,
stdio: 'inherit'
}
)
);
process.exit();
}
);
the best solution could be (for now) to use something like pm2 to restart the server on crash (or something similar with Docker).
Here's a dependency-free alternative :
process.on( 'uncaughtException', () => { process.once( 'exit', () => spawn( process.argv.shift(), process.argv, { cwd: process.cwd(), detached: true, stdio: 'inherit' } ) ); process.exit(); } );
Nice!
When using this snippet I got the following error message:
ReferenceError: spawn is not defined
This import fixed the issue:
var {spawn} = require('child_process')
Reference: https://stackoverflow.com/a/44643419/14678591
Yeah I didn't add the import statement sorry. ^^
Also if you'd prefer a server independent version you can use my desktop version node-snapdrop-electron
Does this work completely offline or does it rely on google's stun servers?
Completely offline. Funny enough my Internet went out (router was still functional just no connection to the outside internet) when I first started working on it and it still worked