如何允许其他网络连接到服务器 nodejs socket io

Posted

技术标签:

【中文标题】如何允许其他网络连接到服务器 nodejs socket io【英文标题】:How to allow other networks to connect to server nodejs socket io 【发布时间】:2020-06-27 02:51:44 【问题描述】:

我正在尝试使用 socket.io 创建实时聊天,目前我只能在使用自己的网络时才能连接。 (通过 [ngrok]https://ngrok.com/ 进行测试)。

我怎样才能允许其他人也连接?

socket.js 文件:


var app = require('express')();
var http = require('http').createServer(app);
var io = require('socket.io')(http);


http.listen(3000, function()
  console.log('listening on *:3000');
);


io.on('connection', function(socket)
  console.log('a user connected');

  socket.on('chat.message', function(message) 
    console.log(message)
     io.emit('chat.message', message)
  )
);

chat.js 文件:


import io from 'socket.io-client';

const socket = io('my_ipv4_address':3000');

var app = new Vue(
    el: '#app',
    mounted: function() 
      console.log('testing 123')
      socket.on('chat.message', function(message) 
        this.messages.push(message)
      .bind(this));
    ,
    data: 
      messages: [],
      message: null
    ,
    methods: 
        send() 
            socket.emit('chat.message', this.message)
    
)

【问题讨论】:

这个问题可能不属于这里,因为它实际上是关于网络,而不是关于代码。但是,简而言之,您需要在路由器上设置从公共端口号到私有 IP/端口号的端口转发。然后,要么直接从网络外部连接到路由器的公共 IP 地址,要么设置一个指向公共 IP 地址的动态 DNS 名称。然后,路由器会将传入连接转发到您专用网络上的主机/端口。在执行此操作之前,请绝对确保您的服务器已针对攻击进行了强化。 谢谢!我测试过,它有效。您能提出任何安全建议吗? 【参考方案1】:

@jfriend00 解决了这个问题。

我也变了

const socket = io('my_ipv4_address':3000');

const socket = io('my_public_ip':3000');

【讨论】:

以上是关于如何允许其他网络连接到服务器 nodejs socket io的主要内容,如果未能解决你的问题,请参考以下文章

如何在NodeJS中代理websocket连接到其他websockets

如何从局域网外部连接到 Nodejs 服务器

NodeJS - 如何连接到运行 Node 应用程序的远程 PC?

为啥我无法从任何网络连接到 NodeJS express 服务器?

将桌面和移动客户端连接到 Django 和 Sails MVC 网络框架

安全洋葱控制台(SOC)