繁体   English   中英

无法在本地 -Socket.io 之外建立连接

[英]Cannot establish connection outside of the local -Socket.io

服务器.js

import { Server } from "socket.io";

const io = new Server(8000);

io.on("connect", (socket) => {
    console.log(`connect ${socket.id}`);

    socket.on("ping", (cb) => {
        console.log("ping");
        cb();
    });

    socket.on("disconnect", () => {
        console.log(`disconnect ${socket.id}`);
    });
});

客户端.js

import { io } from "socket.io-client";

var  socket = io.connect('ws://<server-ip>:8000', {transports:['websocket']});

socket.on("connect", () => {
    console.log(`connect ${socket.id}`);
});

setInterval(() => {
    const start = Date.now();
    socket.emit("ping", () => {
        console.log(`pong (latency: ${Date.now() - start} ms)`);
    });
}, 1000);



socket.on("disconnect", (reason) => console.log(`Socket disconnected: ${reason}`));
socket.on("close", (reason) => console.log(`Socket closed: ${reason}`));
socket.on('error', (data) => console.log(`WS Error: ${data}`));
socket.on('connect_error', (data) => console.log(`Connect Error: ${data}`));

我无法通过不同的互联网建立连接,它在本地工作正常。 还尝试关闭防火墙,结果仍然相同,我不知道我错过了什么? 对服务器和客户端使用 socketio v4

在与 windows 苦苦挣扎 10 小时后,通过在 30 分钟内使用 aws ec2 linux2 解决了问题,我发现 windows 不太好,例如这些东西(即使我做了端口转发和其他自定义)。 这是想要公开服务器的解决方案。

  1. 租用 aws ec2 或 aws lightsail(我在 lightsail 上做过,以免浪费时间两者都一样)
  2. 将入站规则配置为 Custom->TCP->Port->White List (for socket)
  3. 配置linux依赖
  4. 并克隆 repo 并运行服务器

建议:不要为了心理健康使用windows

你可以使用上面的服务器/客户端示例,工作正常。

感谢您帮助@KonradLinkowski @nosTa @SayeedAfridi

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM