Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 双发插座_Javascript_Node.js_Socket.io - Fatal编程技术网

Javascript 双发插座

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

我正在使用Socket.IO将数据从客户端发送到node.js服务器。当我从客户机收到数据时,我只是简单地记录它。但是,数据记录两次,而我只希望它记录一次

这是客户端代码

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(“连接”)。你能给我举个例子吗?我会投票的