Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.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,我的客户设置如下: var socket = io(); socket.on('thing', function(socket){ console.log('A user connected: ' + socket.data); }); function sendThing(){ var data = document.getElementById('myInput').value; console.log(data) socket.emit('mes

我的客户设置如下:

var socket = io();

socket.on('thing', function(socket){
        console.log('A user connected: ' + socket.data);
});

function sendThing(){
    var data = document.getElementById('myInput').value;
    console.log(data)
    socket.emit('message', { message: data });
}
我可以很好地接收事件,我让我的服务器发出一个事件,它可以很好地注销:

io.on('connection', (socket) => {
  io.emit('thing', { data: 'thisisathing' });
});
编辑:my on.message功能:

io.on('message', (socket) => {
    console.log(socket.message);
});
但是我的服务器从未收到消息,因为客户端的emit不会触发。套接字存在,我没有收到任何错误


如何修复此问题?

尝试将侦听器嵌套在连接函数中,如:

io.on('connection', (socket) => {

    socket.on('message', (socket) => {
        console.log(socket.message);
    });

});

中所述,尝试将侦听器嵌套在连接函数中,如:

io.on('connection', (socket) => {

    socket.on('message', (socket) => {
        console.log(socket.message);
    });

});

中所述,我认为您必须在连接内部收听
消息

io.on('connection', (socket) => {
  socket.emit('thing', { data: 'thisisathing' });
  socket.on('message', (data) => {
    console.log(data.message);
  });
});

我认为您必须在连接中收听
消息

io.on('connection', (socket) => {
  socket.emit('thing', { data: 'thisisathing' });
  socket.on('message', (data) => {
    console.log(data.message);
  });
});

你在服务器上有接收消息的事件处理程序设置吗?我有,我编辑了我的问题你在服务器上有接收消息的事件处理程序设置吗?我有,我编辑了我的问题我也侦听“连接”,我修改了我的问题以包含函数我也侦听“连接”,我修改了我的问题,加入了我以前在使用socket.io时不必这样做的功能。不管怎样,编辑:当我在传递的“socket”上调用emit时起作用。你看了文档并尝试了我答案中的语法了吗(略有不同)事实上你在我面前回答正确。因此,JmJ可以随意将@Maxwell Lasky answer标记为“正确”。哈哈,别担心,希望@JmJ做出这样的更改以防止其他人产生任何混淆。我以前使用socket.io时不必这样做,但无论如何它不起作用编辑:当我在传递的“socket”上调用emit时起作用你看了文档并尝试了我答案中的语法了吗(略有不同)事实上,你在我面前说得对。所以,JmJ可以随意将@Maxwell Lasky的答案标记为正确。哈哈,别担心,希望@JmJ做出这样的改变,以防止其他人产生任何困惑