Hello Glitch
What’s the port range that can be used? As far as I know it’s only possible to use port 3000 to host a website, correct me if I’m wrong. If we have more ports than 3000, please let me know.
What’s the port range that can be used? As far as I know it’s only possible to use port 3000 to host a website, correct me if I’m wrong. If we have more ports than 3000, please let me know.
Right now we only expose only one port to the external world. If you want to expose more than one service, you might try with a reverse proxy, like the one offered by the http-proxy npm package. That way, you might have different services listening at various port, and then the proxy listening at port 3000: the proxy might then convert different urls into different ports, for example:
https://your-project.glitch.me/serviceA/:path -> http://localhost:4000/:path
https://your-project.glitch.me/serviceB/:path -> http://localhost:5000/:path
https://your-project.glitch.me/serviceC/:path -> http://localhost:6000/:path
Is there a sample project that implements this?
Hey, @kgashok
Take a look at this package (and it’s usage examples - they are pretty much similar as etamponi describes): https://www.npmjs.com/package/express-http-proxy
When I haven’t launched my app, my port on 3000 is free, right?
And if I want to run another tool which allows for the port to be set, as follows:
another_tool -s – port 3000
I should be able to go my app URL (http://myapp.glitch.me for e.g.) and view the output of that tool right? Or am I missing something?
That’s absolutely right
In the shell prompt, when I launch elm-analyse -s --port 3000
, I get the error,
Elm Analyser server starting with config:
{ port: '3000',
elmFormatPath: 'elm-format',
format: 'human',
open: false }
events.js:183
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE :::3000
at Server.setupListenHandle [as _listen2] (net.js:1360:14)
at listenInCluster (net.js:1401:12)
at Server.listen (net.js:1485:7)
at Function.serverListen [as listen] (/app/node_modules/express-ws/lib/index.js:40:28)
at /app/node_modules/elm-analyse/dist/app/server/app.js:61:13
at /app/node_modules/elm-analyse/dist/app/server/worker.js:30:9
at /app/node_modules/elm-analyse/dist/app/util/dependencies.js:58:17
at /app/node_modules/elm-analyse/dist/app/util/cache.js:66:13
at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:511:3)
and a ps -aux
shows me:
root 28756 0.0 0.0 19712 3220 pts/1 Ss 17:40 0:00 /bin/bash /etc/service/wetty/wetty-command.sh
root 28760 0.0 0.0 51004 3200 pts/1 S 17:40 0:00 su --preserve-environment --login app
app 28761 0.0 0.0 19984 3644 pts/1 S 17:40 0:00 -su
app 28918 0.0 0.0 19764 3264 ? SNs 17:50 0:00 bash /opt/watcher/app-types/node/start.sh
app 28943 0.0 0.0 19764 1756 ? SN 17:50 0:00 bash /opt/watcher/app-types/node/start.sh
app 28968 0.0 0.5 883724 37168 ? SNl 17:50 0:00 node server.js
app 28997 0.0 0.0 36084 3072 pts/1 R+ 17:53 0:00 ps -aux
are the processes running…
and a ss
shows me these:
$ ss -tulw
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 *:53471 *:*
tcp LISTEN 0 128 *:1082 *:*
tcp LISTEN 0 128 *:1084 *:*
tcp LISTEN 0 128 :::3000 :::*
tcp LISTEN 0 128 :::1081 :::*
tcp LISTEN 0 128 :::1083 :::*
tcp LISTEN 0 128 :::1085 :::*
tcp LISTEN 0 128 :::1086 :::*
tcp LISTEN 0 128 :::1087 :::*
tcp LISTEN 0 128 :::1088 :::*
Are you 100% sure that your node app is not listening the 3000 port? Can you provide the project name or some part of code?
Oh! That’s where I need to look at!
What if I want elm-analyse also to be running concurrently? What are my options?
Can you help configure https://www.npmjs.com/package/express-http-proxy into this project for me so that I can use 3000 for the app, and 3001 for the elm-analyse output?
Thanks much!
One other thing: I would like elm-format
to run whenever there is an edit that happens on *.elm files.
How do I set this up? Thanks much!
Can’t you copy the example?
const proxy = require('express-http-proxy')
const app = require('express')()
app.use('/elm', proxy(process.env.DOMAIN_NAME + '/elm'))
app.listen(3000)
watch.json
{
...
"restart": {
"*.elm",
...
}
}
So, with those changes,
bitly-elm.glitch.me/elm -> my Elm application
and bitly-elm.glitch.me -> elm-analyse tool output?
Is that will be possible?
In my watch.json I already have,
{
"restart": {
"include": [
"\\.elm$"
]
},
"throttle": 1000
}
Do I change that to what you have suggested?
\\.elm$
is matching your files?Will be it possible in the future to expose ports like 8443? I wish to build a telegram bot hosted on glitch but I am unable to since Telegram only suports the ports 443,80,88 and 8443
Another part of Glitch proxies requests made to 80 and 443 on your glitch.me subdomain to your project container on port 3000. So that should be able to work with Telegram.
@wh0 I didn’t understand. Can you elaborate. I tried using the telegram webhook but it didn’t work for me.
Telegram would connect to a project subdomain like hello.glitch.me on say port 443. But hello.glitch.me doesn’t resolve to an IP address belonging to that project’s container. It resolves to a proxy server, and that proxy server receives the HTTP request. That proxy server connects to the project container on port 3000 and sends a copy of the request there.
So as far as Telegram is concerned, it is connecting to port 443. And as far as your project code is concerned, it’s receiving requests on port 3000. These should mean that overall it might be able to work, but…
I would have to take your word for it that it still doesn’t work. There are many other fiddly things about Glitch that could break it. Notably (i) there’s the system where it sometimes delivers a “Waking up” screen when your project container isn’t running, which has been known not to be friendly for anything other than a human sitting at a web browser, and (ii) they’re doing some not-publicly-detailed filtering to block abusive requests, which has been known to be disruptive for certain non-abusive integrations (1) (2).
Can this answer also be applied to my question?
My best guess is that it has something to do with Glitch being unable to connect with Telegram’s bot API.
I guess that’s one interpretation of glitch and telegram not connecting. although connections are directional when you look at them in more detail. this thread is about telegram connecting to glitch, and your thread, at least as titled, suggests a connection going from glitch to telegram. maybe that’s an unintentional bit of imprecision in the wording? or it might be precise and unrelated