This is for a bigger project but i managed to condense it into one small program.
I am trying to get the ip address of the client from a websocket connection. I found out that I can use socket.handshake.address but when I run it on repl.it it always says the ip address is 172.18.0.1 no madder where I am connected from.
Index.js
const express = require('express');
const http = require('http').createServer();
const app = require('express')();
const server = require('http').createServer(app);
const io = require('socket.io')(server);
io.on('connection', () => { /* … */ });
server.listen(3000);
app.get('/', (request, response) => {
response.sendFile('/home/runner/basicSocketio/index.html');
});
io.on('connection', (socket) => {
io.emit("message", "hello client")
socket.on('message', (message) => {
console.log(socket.handshake.address)//always prints ::ffff:172.18.0.1
})
})
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-9">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src = "https://cdn.socket.io/socket.io-3.0.0.js"></script>
</head>
<body>
test
</body>
</html>
<script>
const socket = io();
socket.emit('message', "hi server");
socket.on('message', text => {
console.log("recieved: " + text);
});
</script>
I am not sure why this is happening and cant find any solutions, when i ran this locally it seemed to work fine. What can i do to fix it?