Socket.io不止一次连接

时间:2017-09-19 08:18:58

标签: javascript node.js sockets socket.io

我试图显示我与带套接字的页面的连接,但是当我重新加载我的页面时,该消息显示2次,当我再次重新加载时,3次等...

这是代码节点js。

.get('/compte/', function(req, res) {
res.render('compte.ejs');
io.sockets.on('connection', function(socket){
    socket.on("new_client", function(message){
       console.log(message);
    });
});

});

这是代码html / script。

<script src="/socket.io/socket.io.js"></script>
    <script>
        var socket = io.connect('http://localhost:8080');

        socket.emit('new_client', "hello");
    </script>

,这是2次重新加载后的显示。

hello

hello
hello

hello
hello
hello

我希望能清楚我的问题。 谢谢。

1 个答案:

答案 0 :(得分:0)

实际上,您的客户端不会连接多次,但您会在/compte/的每个get请求中为SocketIO连接添加事件侦听器。它们累积在io.sockets

尝试将SocketIO事件处理程序移出请求处理程序:

.get('/compte/', function(req, res) {
    res.render('compte.ejs');
});

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