The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
Antihost offers VPS plans with one-click Docker, NVMe storage and a 14-day free trial.
To run a Socket.IO Node.js application on a Dokku VPS, deploy it as a web process, make the application listen on Dokku’s assigned port, and configure the reverse proxy to pass the WebSocket upgrade. The critical nginx settings are HTTP/1.1 plus the Upgrade and Connection headers; without them, Socket.IO may fall back to polling or fail to establish a WebSocket connection.
This guide covers the application contract, Procfile, port handling, nginx configuration, idle-connection timeouts, deployment checks, and the limits of scaling Socket.IO behind a proxy.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
What Dokku must do for Socket.IO
Dokku places your Node.js process behind a reverse proxy. Ordinary HTTP requests can work with a basic proxy, but a WebSocket connection begins as an HTTP request and then asks the proxy to switch protocols. The proxy must forward that upgrade instead of treating the request as a normal, short-lived HTTP exchange.
There are three separate pieces to make reliable:
- Application process: Dokku routes web traffic to the process type named
web. - Listening port: your Node server must bind to the port Dokku supplies rather than assuming a fixed public port.
- Proxy upgrade: nginx must use HTTP/1.1 and forward the WebSocket upgrade headers for Socket.IO requests.
If any one of these is wrong, symptoms can include a refused connection, a 404 on the Socket.IO endpoint, repeated polling requests, or a connection that closes after sitting idle.
#1 Best Overall
- Powerful Turbo Fan:CAGIWIRU Electric Air Duster have reached speed up to 130000RPM,Can efficient remove dust and debris.With LED light and Three Adjustable Speed to meet with different cleaning tasks.
- With Attached USB C Fasting Charging cable.Charing 3 hours,Enjoy up to 240 minutes of use on the lowest setting, For third speed can use for 25mins.with four charging options to meet with your needs.
- Wide Application:Upgraded attached 5 different nozzles,making it suitable for a variety of scenes, such as car,pet, pc, keyboards, and other electronic devices. It also serves for office and home clean duster.
- Handy Design & Portable:Cordless air duster electric nozzle is Light weight and small size, design and comfortable to hold and space saving, convenient to carry around. You can put it in your room or inside the car without taking up space.
- Warranty & Support: Our Electric air duster comes with 5 years warranty and 24/7 customer service. During this period, if you have any questions,pls kindly feel free to contact us.
Before you deploy
Application prerequisites
- A Node.js application with Socket.IO installed and a start script that launches the server.
- A repository Dokku can deploy.
- A VPS with Dokku already installed and an application created in Dokku.
- A DNS name pointing to the VPS if you intend to expose the service through a hostname.
This article focuses on the application, process, port, and proxy configuration. Dokku installation, VPS hardening, DNS, certificate issuance, and the exact git-push syntax depend on the Dokku release and your infrastructure; use the documentation for the installed release for those operations.
Confirm the server’s start command
Dokku’s Node guidance uses a Procfile entry in this form:
web: npm start
The command after web: must actually start your HTTP server. Check the scripts.start entry in package.json; if it points to a development watcher, replace it with a production command that keeps one foreground Node process running. Socket.IO is attached to the HTTP server, so the process must not exit after starting.
Create the Procfile and bind the server correctly
Declare a web process
Create a file named exactly Procfile at the repository root, with no extension:
web: npm start
Dokku’s process-management documentation identifies web as the process type that receives web traffic and notes that it is scaled to one on the first deploy. A worker process, a custom process name, or a command that listens only on a local development interface will not receive normal HTTP and WebSocket traffic through Dokku’s proxy.
Use the port supplied by the environment
Have Node read process.env.PORT and provide a development fallback only for local use. A typical server-side pattern is:
Rank #2
- Screen Cleaner is Your Screen’s New Bestfriend! - EVEO is proud to present a screen cleaner that’s perfectly suited for your TV. Meet your new screen cleaner, computer screen cleaner, laptop cleaner, iPad cleaner, Macbook,tv cleaner or any other electronic device. Our screen cleaner spray and wipe along with the included plush microfiber cloth, easily removes dust, fingerprints & other smudges on the screen’s surface. Clean effectively for a streak-free screen
- Gentle on your Screens - Our screen cleaner spray and wipes is compatible to be used even for the most sensitive LCD, LED, CRT, and OLED screens in proper use. Be at ease knowing that this product is compatible with all the major brands: LG, SONY, Samsung, Sharp, iPad, iPhone, Android screens, Kindle, PC monitors - we’ve got you covered! Can be used as LCD screen cleaner, tv cleaner, smart tv screen cleaner, and more
- Premium Super Soft Plush Microfiber Cloth - Included in this efficient screen cleaning kit. This screen cleaner spray and wipe has our signature plush microfiber cloth specially designed to comply with screens and monitors and leave them streak-free. Has been shown to effectively absorbs stubborn stains, zero streaks, and no fiber shedding. Always use this together with our screen cleaner for the best results
- Easy-to-Use Screen Cleaner Kit + microfiber cleaning cloth - The EVEO Screen Cleaning Kit will easily be your new favorite tool when it comes to taking care of the things you love most, quick and easy solution for a streak-free screen. Simply screw on the sprayer gun on the screen cleaner bottle. Spray the cleaning liquid onto the microfiber cloth, then wipe the screen until desired cleanliness & shine is achieved.
- Quality Screen Care Kit Worth Purchasing - Enjoy a convenient Screen Cleaner anytime, anywhere you need it. Your satisfaction is our top priority. We stand behind the quality of our products and that’s why, you shouldn’t be worrying at all. We manufacture the Best Screen Cleaner. and can be used for laptop cleaning kit, laptop screen cleaner, tv screen cleaner for smart tv. MacBook screen cleaner, monitor cleaner or screen cleaner spray for electronic devices with microfiber cleaning cloth
const port = Number(process.env.PORT || 3000);
server.listen(port, '0.0.0.0', () => {
console.log(`Listening on ${port}`);
});
The important deployment behavior is not the fallback number; it is that the production process honors the environment value and binds on an interface reachable from the proxy. Binding only to localhost can make the process invisible to a proxy running outside that network namespace.
Do not assume you should set PORT manually in Dokku
Dokku’s port-management guidance advises against manually setting PORT, because Dokku derives the value from its port mappings. A separate third-party example sets PORT=3000 html in application configuration, but that advice conflicts with Dokku’s own port-management guidance and should not be applied blindly. Check the behavior of your installed Dokku version and its current port mapping before adding a manual PORT env value.
An older example repository uses a mapping in the form DOKKU_PROXY_PORT_MAP=http:80:5000. Treat that as a dated example rather than a universal requirement: port mapping syntax and defaults can change, and the correct internal port is the one your process actually listens on.
Deploy the application and verify the process
Use your normal Dokku deployment workflow for the installed release. Because the precise git-push command and release-specific setup were not established here, do not copy a command from an unrelated Dokku version without checking its documentation.
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →After deployment, verify these conditions on the server:
- The build completes and dependencies are installed.
- The
webprocess is running rather than repeatedly restarting. - The Node log reports the port supplied through the environment.
- The application is listening on the expected internal interface and port.
- An ordinary HTTP route responds through the Dokku hostname before you troubleshoot WebSockets.
Testing HTTP first separates application startup and routing failures from WebSocket-proxy failures. If the ordinary route fails, fix the process, port, or application error before editing nginx.
Rank #3
- 【Large size】:Measuring 800 x 300 mm/ 31. 5×12 inches, which is wider and taller than others. Large mouse pad can perfectly fit your keyboard and mouse of any size, and there is also ample space for peripherals such as phones, tablets, etc.
- 【LED backlight mouse pad】:Blade Hawks RGB mouse pad provides 7 static modes and 7 dynamic modes will give you the options you are looking for. Power-off memory function remembers the last lighting mode you selected. The super glow fiber Chroma will give you a colorful gaming setup that you want.
- 【Anti-slip rubber base】:Made from Natural rubber, this gaming mousepad will firmly grip your desktop, allowing you to enjoy the ultimate precision in the games you are most passionate about. It also comes with a texture that enhances this ability even further.
- 【Smooth and waterproof surface】: Micro-textured cloth surface, for extremely precise mouse control and a smooth movement. When liquid splashes on the gaming mouse pad, it forms water droplets and slides down. Will not delay your work or gameplay.
- 【Plug and play】: This mouse and keyboard pad is powered by USB, plug and play, no driver required. One button control light modes. Press one time to change the lighting mode, press twice to change the brightness, press and hold about 3 seconds turn ON/OFF.
Configure nginx to pass the Socket.IO upgrade
Required headers for the Socket.IO path
Socket.IO’s reverse-proxy guidance shows an nginx upstream using HTTP/1.1 and forwarding the upgrade headers. Dokku’s WebSocket tutorial uses the same headers in a dedicated location and disables proxy buffering. The essential directives are:
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_buffering off;
Place these directives in the location that handles Socket.IO traffic, normally the /socket.io/ path. The exact way you persist custom nginx configuration varies with Dokku’s current proxy setup, so use the installed release’s documented mechanism rather than editing a generated file that may be overwritten.
Recommended Free Tools
Dedicated WebSocket location
A dedicated location makes the intent clear and mirrors Dokku’s tutorial approach:
location /socket.io/ {
proxy_pass http://your_dokku_upstream;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_buffering off;
}
your_dokku_upstream is explanatory text, not a value to paste. Replace it with the upstream name generated or documented by your Dokku configuration. Preserve the rest of your application’s proxy headers and routing rules. The key requirement is that requests under the Socket.IO path reach the same Node process as the rest of the application.
One location for HTTP and WebSocket traffic
You can also let one location handle both ordinary HTTP and upgrade requests by mapping the incoming Upgrade header. The common pattern uses nginx’s map directive to choose a connection value based on $http_upgrade:
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
location / {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
This arrangement avoids maintaining separate routing logic when the same upstream serves both page requests and Socket.IO. A dedicated /socket.io/ location is easier to audit when you want buffering and timeout behavior to apply specifically to long-lived connections.
Rank #4
- 【Softer and More Comfortable】Vaydeer wrist rest has unique diamond pattern, which is the combination of softness and aesthetics. The materials of wrist rest are improved into higher quality memory foam and covered with silky smooth lycra. The computer wrist rest makes you as comfortable and cushiony as like rest your wrists on clouds.
- 【Ergonomic Wrist Saver】The wrist rests for keyboard and mouse comes with a 17.32×3.15×0.83 inch keyboard wrist pad and a 5.94×3.15×0.83 inch mouse wrist support. Based on ergonomic design, the unique concave shape is the perfect fit for your wrist joints. The wrist rest pad fits most computer keyboards and laptops, improve hand and wrist posture, release your wrist and arm stress.
- 【Non-Slip Rubber Bottom】Featuring an anti-skid silicone base on the bottom, this wrist keyboard support stays firmly in place on your desk, preventing the padding from sliding around, ensuring stable and consistent wrist support during extended computer sessions.
- 【Better Experience & Pain Relief】Our keyboard arm rest is beneficial to alleviate the soreness caused by direct contact and friction between your arm and a hard desk surface, reducing the risk of wrist fatigue or carpal tunnel. The soft texture of memory foam can evenly distribute the pressure around your wrists and provide good support with just enough give.
- 【Helpful in Multiple Scenarios】Whether you're working, studying, writing, typing, gaming, this keyboard and mouse rest combo is an essential accessory to add comfort and support to your hands and wrists. It’s also a great gift for men, women, family, friend, coworker, gamer, teacher, etc.
Set a timeout suitable for long-lived connections
nginx may close an idle upstream connection after roughly 60 seconds under its default behavior, according to a proxy configuration guide. That is short for a WebSocket that is intentionally quiet. Raise proxy_read_timeout for the location or upstream that serves Socket.IO, choosing a value longer than the longest period in which your application permits a connection to remain idle.
Do not confuse an nginx read timeout with Socket.IO’s heartbeat and disconnect settings. The proxy timeout controls how long nginx waits for upstream activity; Socket.IO’s own ping cycle and server-side disconnect rules still apply. After changing the timeout, reload the proxy using the Dokku-supported configuration workflow and confirm that the generated configuration contains the directive in the effective location.
Client and server checks after deployment
Confirm the transport
Open the browser’s network tools while connecting to the application. A healthy WebSocket path begins with a Socket.IO handshake and then shows an upgraded WebSocket connection when the client and proxy permit it. If the client remains on long-polling, check the proxy upgrade directives, the URL path, and whether another proxy or load balancer sits in front of Dokku.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallCheck the path and origin
The client’s Socket.IO URL and path must match the server and proxy location. A proxy rule for /socket.io/ will not help a client configured with a different custom path unless the nginx location is changed to match. If the page loads but the handshake returns 404, inspect the path before changing timeout or scaling settings.
Watch logs during a connection attempt
- A process restart at connection time points to an application exception or an invalid start command.
- A 502 or connection-refused response usually indicates that nginx cannot reach the web process or that the process is listening on the wrong port.
- A successful HTTP response followed by a failed upgrade points toward missing HTTP/1.1 or upgrade headers.
- A connection that works briefly and then dies while idle points toward proxy timeout settings or heartbeat behavior.
Common failure modes and fixes
“It works locally but not on Dokku”
Local development often uses a fixed port and a direct connection, bypassing the reverse proxy. Confirm that production code reads process.env.PORT, binds to a reachable interface, and starts through the Procfile’s web command. Then test the ordinary HTTP route through Dokku.
Polling works, WebSocket does not
This usually means the application is reachable but the upgrade is not being forwarded. Verify all three proxy requirements together: proxy_http_version 1.1, Upgrade $http_upgrade, and Connection "upgrade". Also check that a fronting proxy has not removed those headers before the request reaches Dokku.
Best Value
- 【No Drill Mounted】Cable management tray can be assembled in as little as 3 minutes or less-simply. Side clips easily clampe the edge of desk, pass through the holes on the sides, and secure excess cables with baskets. Desk cable management supports inward or outward installation to meet your needs in different scenarios, and provides you with great convenience when collecting and organizing wires.
- 【Rubber Pad Protects Desk】Wire organizer under desk built-in soft rubber pads on the clamp protect your desk from scratches, so you will not damage your furniture or office.
- 【Sturdy and Beautiful】Cord management under desk is made of high-quality carbon steel and holds about 15 lbs. The wire basket has 2 holes on each side of the tray to enable your cables to pass freely. Cable baskets are suitable for desk thickness use from 0.4" to 2.4".
- 【Space Saving & Keep Organized】Desk cable management tray holds all your power cords, outlet strips, USB hubs and computer transformers hidden from your feet, and the data cables will not enter the vacuum cleaner to keep your desk clean and tidy. Desk wire organizer is also suitable for use in the kitchen and outdoors.
- 【Reduce Safety Risks】Cable tray under desk keeps all plugs away from your kids, no more worry about tripping. Using 2 holes wire tray saves extra space, helps you easily cabling and wire protection. The mesh design is not easy to accumulate dust, but avoids safety accidents caused by messy wires.
Socket.IO returns a 404
Check that the proxy location matches the Socket.IO path and that the request reaches the application’s Socket.IO server rather than a static-file or fallback route. Confirm the client and server use the same path configuration.
The process is healthy but the proxy reports 502
Recheck the internal port. Do not infer it from the public HTTP port or from an old mapping example. The Node process must listen on the port Dokku assigns, and the proxy’s upstream must target that same internal endpoint.
Idle clients disconnect
Raise the nginx read timeout for long-lived connections and compare it with the application’s heartbeat interval. If a different load balancer is in front of Dokku, inspect its idle timeout as well; the shortest timeout in the chain wins.
Scaling beyond one web process
A single web process is the simplest deployment because every handshake and subsequent request reaches the same Node process. Scaling to multiple instances introduces session-routing questions, especially when Socket.IO uses its long-polling fallback. The search summary for this procedure asserted that sticky sessions are needed when scaling out, but the available documentation did not establish how Dokku’s current scaling and affinity behavior implements them.
Therefore, treat multi-instance Socket.IO as a separate design task. Before increasing the process count, verify:
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Clear out junk files and repair common Windows errors3Fix the driver behind crashes, sound loss and screen glitches- Whether every polling request from one client is guaranteed to reach the same instance.
- How WebSocket and polling traffic are balanced by the complete proxy chain.
- Whether your Socket.IO deployment uses an adapter or shared state for events between instances.
- How disconnects, deploys, and instance replacement affect connected clients.
If you cannot verify those behaviors, keep one web instance for the initial deployment and document the scaling limitation rather than assuming that adding processes is transparent.
A practical deployment checklist
- Application: Socket.IO is attached to the HTTP server that the start command launches.
- Procfile: the repository contains
web: npm startor an equivalent command that starts the production server. - Port: Node reads Dokku’s supplied
PORTvalue and listens on a reachable interface. - HTTP test: a normal route responds through the Dokku hostname.
- Proxy upgrade: nginx uses HTTP/1.1 and forwards both upgrade headers.
- Buffering: buffering is disabled for the WebSocket location when following Dokku’s dedicated-location pattern.
- Timeout: the proxy read timeout exceeds the expected idle period for your connections.
- Path: the client Socket.IO path matches the nginx location and server configuration.
- Logs: the web process remains running while a client connects and disconnects.
- Scaling: you have verified session affinity and shared-state behavior before running more than one instance.
Choosing the proxy layout
| Layout | When it fits | What to verify |
|---|---|---|
Dedicated /socket.io/ location |
You want WebSocket-specific buffering and timeout rules and an easily auditable configuration. | The location reaches the same upstream as the Node application and contains all upgrade directives. |
| Single location with an upgrade map | One upstream serves ordinary HTTP and WebSocket requests and you prefer one routing block. | The map is defined in the correct nginx context and the connection value changes when an upgrade header is present. |
| Multiple web instances | You need horizontal capacity after validating session and event-sharing behavior. | Sticky-session behavior, adapter/shared state, and Dokku’s current scaling implementation. |
Final validation before calling the deployment complete
Run a connection test from a client outside the VPS network, leave it idle for longer than your expected quiet period, and then generate traffic again. Confirm that the connection remains usable, that ordinary HTTP requests still work, and that a process restart produces a clean reconnect rather than a permanently stuck client. Repeat the check after every change to port mappings or proxy configuration, because those changes can regenerate nginx settings.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

