i have node js express project. I m implementing socket.io for chat applications. To check Socket connection, i m using this tool. https://amritb.github.io/socketio-client-tool/
This is my server code.
const express = require('express');
const http = require('http');
expressValidator = require('express-validator');
const morgan = require('morgan');
const bodyParser = require("body-parser");
const compression = require('compression');
const logger = require('./components/helper/logger');
const multer = require('multer');
// const uuidV4 = require('uuid/v4');
const moment = require("moment");
const fs = require('fs')
const cors = require("cors");
const clientAuthentication = require('./middleware/clientAuthentication');
const config = require('./config/config');
const app = express();
const jsonParser = bodyParser.json();
const port = config.host.port || "3001";
app.set("port", port);
const server = http.createServer(app);
app.use(cors());
//////////////////////socket/////////
var io = require("socket.io")(server,{
cors: {
origin: '*',
},
});
// var socketmodule = require('./components/chat/socketmodule')(io)
//added temp
const {joinUser, removeUser, findUser} = require('./components/chat/users');
let thisRoom = "";
io.on("connection", function (socket) {
console.log("connected");
socket.on("join room", (data) => {
console.log('in room');
let Newuser = joinUser(socket.id, data.username, data.roomName)
socket.emit('send data', { id: socket.id, username: Newuser.username, roomname: Newuser.roomname });
thisRoom = Newuser.roomname;
console.log(Newuser);
socket.join(Newuser.roomname);
});
socket.on("chat message", (data) => {
io.to(thisRoom).emit("chat message", { data: data, id: socket.id });
});
socket.on("disconnect", () => {
const user = removeUser(socket.id);
console.log(user);
if (user) {
console.log(user.username + ' has left');
}
console.log("disconnected");
});
});
//added temp
app.get("/", function (req, res) {
res.sendFile(__dirname + "/chatTest.html");
});
////////////////////socket///////
server.listen(port);
logger.info(config.host.url);
logger.info("API server started on: " + port);
I checked the connection using above tool. like http://localhost:3000, and socket connected. But when I check it in server, its not working.
I m using ngnix server in server and to map my port i m doing reverse proxy like
location /hiyup_dev/ {
proxy_pass http://localhost:3001/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
I checked like http://example.com/hiyup_dev (it will point to port 3001) its not working.
Then i added my port in inbound aws rules. Then i checked like http://myip:3001 it also not working.
What i am missing here. It works fine in local not in server. :(