所以,目前我的设置是我有一个标准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");
});
});
我希望这说明我的问题不够好。 当我看着答案首先我发现了一堆关于路由的东西,但是很困惑。 任何帮助表示赞赏!
对于我从问题和意见了。 你这样做是错误的方式。 你不应该把插件和插座连接的发射在那里它们被多次调用,因为它们被追加每次。
例如:第一次这就是所谓的
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',......
将验证用户可以访问其他的回报和关闭连接。
永远不要把事件处理程序像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来完成。