通过刷新客户端页面进行socket.io多路复用连接

时间:2017-02-02 06:11:19

标签: node.js sockets

我有socket.io

的问题

当我刷新客户端页面时,套接字会增加。

例如,这是示例代码

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

app.get("/",(req,res)=>{
    var doc=`
    <html>
        <head>
            <script src="https://cdn.socket.io/socket.io-1.4.5.js"></script>
            <script>
                var socket = io();
            </script>
        </head>
        <body>
            <h1>hello!</h1>
        </body>
    </html>
    `
    res.send(doc);
    io.on("connection",function(socket){
        console.log("connected!")
    })
})

在第一个连接上,服务器日志有1个“连接!”消息。

并刷新客户端页面,console.log()触发了double。所以日志有3个“连接!”消息

再刷一次它会激发三倍 - &gt; 6条连接的消息

和下一个四重奏!

我不知道为什么连接是多路复用的。你能救我吗?

1 个答案:

答案 0 :(得分:1)

您声明的服务器端套接字的事件处理程序只需要注册一次。

var sql = "Insert IGNORE into lu (Name) VALUES ?";
con.query(sql,[array1],function(err, result){
    if (err){
        con.rollback(function(){
            throw err;
        });
    }
});

每次从浏览器发出请求时,您都会添加一个新的匿名函数作为任何打开的套接字的事件侦听器。