【发布时间】: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 名称。然后,路由器会将传入连接转发到您专用网络上的主机/端口。在执行此操作之前,请绝对确保您的服务器已针对攻击进行了强化。
-
谢谢!我测试过,它有效。您能提出任何安全建议吗?
标签: php node.js sockets vue.js socket.io