socket.on()中没有来自console.log的输出

时间:2018-02-18 19:43:24

标签: node.js socket.io cloud9

对于学校作业,我必须修改在cloud9.io上创建新的Node.js工作区时打开的示例聊天应用程序。当我查看代码试图弄清楚发生了什么以及我需要改变什么时,我尝试放入一些console.log来查看当时发生的事情,但由于某些原因,大多数console.logs从未打印在我运行应用程序时控制台。所以我试图理解这段代码并需要一些帮助!

未打印console.log的一个示例: 来自index.html

<script>
  function ChatController($scope) {
    var socket = io.connect();

    // ...
    // some more $scope.on function

    $scope.send = function send() {
      console.log('Sending message:', $scope.text); // this one gets printed
      socket.emit('message', $scope.text);
      $scope.text = '';
    };
  }
</script>

来自server.js

io.on('connection', function (socket) {
    messages.forEach(function (data) {
      socket.emit('message', data);
    });

    // this is the code that i don't get. I thought if I send a message, 
    // the socket.emit('message', $scope.text) would call this 
    // socket.on('message' ...) to send the msg, but the text in 
    // console.log is never printed in the console
    socket.on('message', function (msg) {
      console.log("sending a message?"); // does not get printed

      var text = String(msg || '');

      if (!text)
        return;

      socket.get('name', function (err, name) {
        var data = {
          name: name,
          text: text
        };

        broadcast('message', data);
        messages.push(data);
      });
    });
  });

所以,是的,如果你们能引导我一点点,那就太好了! 谢谢!

1 个答案:

答案 0 :(得分:0)

console.log将会有两个不同的地方。对于您的index.html文件,他们会转到浏览器控制台,对于您的server.js文件,他们会转到您在Cloud9中运行该应用的终端。检查您要查找的特定日志的位置,您应该找到它们!