HTTP node.js server on Vercel #4703
-
Hi! I have an HTTP node js server hosted on Vercel.com. Here is my server code: app.js const path = require('path');
const express = require('express');
const app = express();
const http = require('http');
const server = http.createServer(app);
const port = 80;
const socketIOHandler = require('./backend/socketIoHandler.js');
app.engine('.html', require('ejs').__express);
app.set('views', path.join(__dirname, 'views'));
app.use(express.static(path.join(__dirname, 'public')));
app.set('view engine', 'html');
socketIOHandler.init(server);
var getIPAddress = function () {
var interfaces = require('os').networkInterfaces();
for (var devName in interfaces) {
var iface = interfaces[devName];
for (var i = 0; i < iface.length; i++) {
var alias = iface[i];
if (alias.family === 'IPv4' && alias.address !== '127.0.0.1' && !alias.internal)
return alias.address;
}
}
return '0.0.0.0';
}
app.get('/', function (req, res) {
res.render('hsh/main/index');
});
server.listen(port, () => {
console.log(`Example app listening on ${getIPAddress()}:${port}`)
}); socketIoHandler.js const { Server } = require("socket.io");
var io;
var init = function(server){
io = new Server(server,{
cors: {
origin: "/",
methods: ["GET", "POST"],
credentials: true
},
transports: ['polling','websocket'],
allowEIO3: true
});
io.on('connection', (socket) => {
console.log('a user connected');
let count = 0;
setInterval(()=>{
socket.emit("hello",`Hello user! Count: ${++count}`);
},1500);
socket.on('disconnect', () => {
console.log('user disconnected');
});
socket.on("connect_error", (err) => {
console.log(`connect_error due to ${err.message}`);
});
});
}
module.exports = {
init
} client side js var socket = io("/",{transports: ['polling','websocket']});
var message = document.querySelector("#message");
var msgCount = document.querySelector("#msgCount");
var count = 0;
socket.on('hello', function(msg) {
console.log(msg);
message.innerHTML = msg;
msgCount.innerHTML = ++count;
});
socket.on("disconnect",function(){
console.log("[SocketIO] - Disconnected!");
message.innerHTML = "[SocketIO] - Disconnected!";
}) console messages
and keeps disconnecting and getting messages forever... |
Beta Was this translation helpful? Give feedback.
Answered by
darrachequesne
May 2, 2023
Replies: 1 comment 2 replies
-
Hi! Unfortunately, the Vercel platform is not suited for long-running connections: https://vercel.com/guides/do-vercel-serverless-functions-support-websocket-connections |
Beta Was this translation helpful? Give feedback.
2 replies
Answer selected by
zekageri
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi! Unfortunately, the Vercel platform is not suited for long-running connections: https://vercel.com/guides/do-vercel-serverless-functions-support-websocket-connections