首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Socket.io提供相同的ip地址,无论连接发生在何处(与repl.it托管)

Socket.io提供相同的ip地址,无论连接发生在何处(与repl.it托管)
EN

Stack Overflow用户
提问于 2022-01-18 02:06:00
回答 1查看 211关注 0票数 0

这是一个更大的项目,但我设法把它压缩成一个小程序。

我试图从websocket连接中获取客户端的ip地址。我发现我可以使用socket.handshake.address,但是当我在repl.it上运行它时,它总是说ip地址是172.18.0.1,在我连接的地方不会更疯狂。

Index.js

代码语言:javascript
复制
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

代码语言:javascript
复制
<!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>

我不知道为什么会发生这种情况,也找不到任何解决办法,当我在本地运行这个项目时,它似乎运行得很好。我能做些什么来解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-18 03:52:30

172.18.0.1是应答的。它是HTML的内部地址,因为它们为您提供index.html,您在那里调用const socket = io()

要查看客户端的真实ip,请使用socket.handshake.headers['x-forwarded-for']表达式,如下所示:

代码语言:javascript
复制
  io.on('connection', (socket) => {
      io.emit('message', 'hello client')
      socket.on('message', (text) => {
        console.log(text)
        // console.log(socket.handshake.address) // Server serving index.html file IP address
    })

      console.log('a client connected')
      console.log('client IP addr: ' + socket.handshake.headers['x-forwarded-for']) // (REAL) client IP
    })

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70749536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档