如何移植socket.io应用程序

时间:2016-07-03 22:27:28

标签: javascript node.js socket.io ip portforwarding

我已经使用node.js和socket.io创建了一个聊天应用程序,但它可以运行但我不想再从localhost:80运行它,我希望它能在线。我如何移植我的网络应用程序?我试图移植一个HTTP端口但是没有用。这是我的服务器端代码:

var express = require("express"),
    app = express(),
    server = require("http").createServer(app),
    io = require("socket.io").listen(server);
server.listen(80);

app.get("/", function(req, res){
    res.sendfile(__dirname + "/index.html");
});

所以是的,我想做的就是不必使用" localhost:80"我希望能够使用我的IP地址进行连接。

1 个答案:

答案 0 :(得分:0)

从家用路由器转发的正常端口应该可以正常工作。 socket.io连接是下面的webSocket连接,webSocket连接作为HTTP请求启动生命,然后相同的原始套接字“升级”到webSocket协议。因此,客户端向服务器发出HTTP请求以启动整个过程并建立原始连接。

因此,任何适用于HTTP的端口转发配置都应该适用于socket.io连接。

Socket.io连接是长期连接(与TCP连接不同),因此您还必须确保没有不允许长期连接的基础结构(通常需要为长期存在的webSocket连接专门配置代理) ,但这应该适用于端口转发。

仅供参考,socket.io连接不需要.listen()。你可以改变这个:

io = require("socket.io").listen(server);

到此:

io = require("socket.io")(server);

如果你的端口转发不清楚......

当您在家庭路由器上进行端口转发时,您将某个端口上的传入请求定向到家庭网络上的特定计算机和端口。然后,当您想要从Internet连接时,您将连接到路由器的公共IP地址以及为端口转发配置的端口。然后,路由器使用端口转发规则将所需端口上的任何传入请求重新路由到本地网络上的特定服务器。你必须非常小心,因为如果你犯了错误或没有正确保护你的应用程序,这可能会打开一个攻击点,互联网上的人可能会攻击你家庭网络的内部。

通常,这不是一个长期计划,最好支付托管公司来运行您的应用程序。然后,您还可以获取永久IP地址,并可以设置与该IP地址对应的域名。