gpt4 book ai didi

javascript - Socket.IO双火

转载 作者:行者123 更新时间:2023-12-03 01:08:38 25 4
gpt4 key购买 nike

我正在使用 Socket.IO 将数据从客户端发送到 Node.js 服务器。当我从客户端收到数据时,我只是将其记录下来。但是数据记录了两次,而我只希望它记录一次?

这是客户端代码

btn.addEventListener("click", (e) => {
socket.emit("comparison", "hello");
});

这是服务器端代码

app.get("/", (req, res) => {
io.on("connection", (socket) => {
socket.on("comparison", (data) => {
console.log(data);
})
})

它记录'你好 你好'

知道这是什么吗?

更新

我仍然没有解决问题,尽管我注意到当我将套接字代码置于快速路由代码之外时,只有一个日志

最佳答案

你不应该将 io.on('connection') 放在 app.get('/') 中。您在这里所做的是在每个 get 请求上注册一个事件监听器。您看到两条语句的原因与 app.get() 内处理的请求数量直接相关。

查看 socket.io 站点中提供的示例 https://socket.io/docs/#Using-with-Express

我在这里添加了一个类似的代码样板,

const express        = require('express');
const bodyParser = require('body-parser');
const app = express();
const port = 8000;

var server = require('http').createServer(app);
var io = require('socket.io')(server);

app.use(express.static(__dirname + '/app'));
app.use(bodyParser.urlencoded({ extended: true }));

server.listen(port,() => {
console.log("server listening on"+port);
});

app.get('/', function(req, res){
//do something
});


io.on('connection',function(socket){

socket.on('comparison', function () {

});

});

关于javascript - Socket.IO双火,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52285570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com