我有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条连接的消息和下一个四重奏!
我不知道为什么连接是多路复用的。你能救我吗?
答案 0 :(得分:1)
您声明的服务器端套接字的事件处理程序只需要注册一次。
var sql = "Insert IGNORE into lu (Name) VALUES ?";
con.query(sql,[array1],function(err, result){
if (err){
con.rollback(function(){
throw err;
});
}
});
每次从浏览器发出请求时,您都会添加一个新的匿名函数作为任何打开的套接字的事件侦听器。