Javascript 双发插座
我正在使用Socket.IO将数据从客户端发送到node.js服务器。当我从客户机收到数据时,我只是简单地记录它。但是,数据记录两次,而我只希望它记录一次 这是客户端代码Javascript 双发插座,javascript,node.js,socket.io,Javascript,Node.js,Socket.io,我正在使用Socket.IO将数据从客户端发送到node.js服务器。当我从客户机收到数据时,我只是简单地记录它。但是,数据记录两次,而我只希望它记录一次 这是客户端代码 btn.addEventListener("click", (e) => { socket.emit("comparison", "hello"); }); 这是服务器端代码 btn.addEventListener("click", (e) => { socket.emit("comparis
btn.addEventListener("click", (e) => {
socket.emit("comparison", "hello");
});
这是服务器端代码
btn.addEventListener("click", (e) => {
socket.emit("comparison", "hello");
});
app.get("/", (req, res) => {
io.on("connection", (socket) => {
socket.on("comparison", (data) => {
console.log(data);
})
})
它记录
“喂
你好’
你知道这是什么吗
更新
我仍然没有解决这个问题,尽管我已经注意到,当我将套接字代码放在express route代码之外时,只有一个日志您不应该在app.get('/')内放置io.on('connection')。这里要做的是在每个get请求上注册一个事件侦听器。您看到两条语句的原因与应用程序内处理的请求数直接相关。get()
看看socket.io站点中提供的示例
我在这里添加了一个类似的代码样板
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 () {
});
});
btn使用的选择器是什么?@karthigh
const btn=document.querySelector(“btn”)代码>你不必在app.get(“/”)中设置io.on(“连接”)。你能给我举个例子吗?我会投票的