javascript - Socket.on() 不执行

标签 javascript node.js socket.io

我正在尝试使用 socket.io 制作一个聊天应用程序,但我遇到了一个奇怪的情况:我的服务器收到了我发送的消息,但客户端没有。

服务器代码:

var app = require('express')();
var http = require('http').createServer(app);
var io = require('socket.io')(http);
app.get('/', function(req, res){
    res.sendFile(__dirname + '\\index.html');
  });

  io.on('connection',function(socket){
    socket.on('chat message', function(msg){
      io.emit(msg)
      console.log('message: ' + msg)
    })
  })

http.listen(3002,function(){
    console.log('listening on 3002');
});

这是客户端的代码:

<script>
      $(function () {
        var socket = io();
        $('form').submit(function(e){
          e.preventDefault(); // prevents page reloading
          socket.emit('chat message', $('#m').val());
          $('#m').val('');
          return false;
        });

        socket.on('chat message', function(msg){
          console.log(msg)
     // $('#messages').append($('<li>').text(msg));
      });
    });

</script>

#m 是我要发送的消息的输入字段

最佳答案

您必须发出带有一些数据的事件名称:

来自 the docs :

socket.emit(eventName[, …args][, ack])

在服务器上:

io.on('connection',function(socket){
    socket.on('chat message', function(msg){
      io.emit('newMessage', msg )  
//             ^^^^^^^^^^   ^^^^
//             event name   data

      console.log('message: ' + msg)
    })
  })

在客户端:

socket.on('newMessage', function(msg){
      console.log(msg)
});

关于javascript - Socket.on() 不执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59040982/

相关文章:

javascript - 如何响应非 IE 浏览器中输入类型=文件的点击事件

javascript - NODEJS/socket.io 发出未触发

android - 我可以通过 native java.net.Socket 连接 Android 客户端与使用 socket.io 的 Node js 服务器吗?

javascript - 因此 Origin 'http://localhost:3000' 不允许访问 Twitter API

node.js - 使用 'Event' 调用类型时未调用 AWS Lambda

java - Java 中的独立 Socket.IO 服务器

javascript - 更改 ng-binding 上的文本颜色?

javascript - 是否有类似的方法来创建没有原型(prototype)的数组?

javascript - React Native 在 render 方法中使用 let 或 var

javascript - "No ' Access-Control-Allow-Origin POST请求成功后抛出' header is present on the requested resource"错误