Socket.on()不执行

时间:2019-11-25 22:24:17

标签: 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是我要发送的消息的输入字段

1 个答案:

答案 0 :(得分:1)

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

来自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)
});