快速每页具体socket.io连接(Express specific socket.io conne

2019-11-04 06:44发布

所以,目前我的设置是我有一个标准app.get(“/”,等我的指数,这里面,我有我的io.on(“连接”,功能等)。现在的目标是让每一次有人连接只有网页我可以得到io.on(连接套接字,并送东西这种方式,我的语法和一切都很好,但是我相信有我io.on(“连接”的路线里面是我的问题。

问题:每当有人后,我开始将服务器连接到我的网站,它的伟大工程,调试的例子,我有一个的console.log它和它的调用一次内部和我们是很好的。 然而,如果同一个人重新加载页面我io.on(“连接”被再次调用,这一次IW生病送2周的console.log的......当我再次重装然后我得到3等等等等,不管如果我关闭页面,重新打开它或来自不同的IP,它看来,如果连接的心不是关闭,当我重新加载,当我重新加载所有仍悬挂连接回忆。

我知道这是一个有点非正统我不张贴我的代码。 它不是语法,这里基本上是设立中描述的一个例子。 哦,还有我需要这就是为什么它在那里摆在首位,我已经保存在其护照变量app.get访问REQ输入。

app.get('/', function (req, res) {
    res.sendFile(__dirname + '/index.html');

    io.on('connection', function(socket){
        console.log("1 connection");
   });

});

我希望这说明我的问题不够好。 当我看着答案首先我发现了一堆关于路由的东西,但是很困惑。 任何帮助表示赞赏!

Answer 1:

对于我从问题和意见了。 你这样做是错误的方式。 你不应该把插件和插座连接的发射在那里它们被多次调用,因为它们被追加每次。

例如:第一次这就是所谓的

app.get('/', function (req, res) {
    res.sendFile(__dirname + '/index.html');
    io.on('connection', function(socket){
        console.log("1 connection");
   });
});

所述io.ons['connection']具有值

function(socket){
   console.log("1 connection");
}

你怎么称呼它回调再次追加第二次。 和的值io.ons['connection']现在是

function(socket){
    console.log("1 connection");
}
 function(socket){
    console.log("1 connection");
}

所以,它打印的console.log两次

第二:如果你想要做的进一步工作的用户登录后in.then你需要在这里验证用户,您可以使用socket.emit('init',.....从客户端和服务器端socket.on('init',......将验证用户可以访问其他的回报和关闭连接。



Answer 2:

永远不要把事件处理程序像io.on()app.get()处理程序。 这是错误的,并不会做,甚至接近你想要什么。 直到有人打你的页面,然后每次有人点击该网页时,没有到位的事件处理程序,它会添加重复的事件处理程序。 这两者都是错误的。

结构应该是这样的:

// watch for people hitting the / route in the browser
app.get('/', function (req, res) {
    res.sendFile(__dirname + '/index.html');
});

// listen for incoming webSocket connections
io.on('connection', function(socket){
    console.log("new connection");
});

这会防止你越来越重复的事件处理程序。

如果你试图做的是只从一个特定的页面侦听传入socket.io连接,这不是一个支持能力。 Socket.io连接是从一个浏览器,而不是从一个特定的路线。 你可以访问与托管网页,并在网页制作浏览器的代码相关的Cookie可以连接到像一个特定的命名空间,但没有内置的相关传入socket.io连接和具体路线之间方式有一个与HTTP请求。

如果你想从传入socket.io连接访问会话对象,即通常可以通过与socket.io连接的开始相关的Cookie来完成。



文章来源: Express specific socket.io connections per page