Html 节点聊天给投手//未处理的错误事件

Html 节点聊天给投手//未处理的错误事件,html,node.js,error-handling,undefined,server,Html,Node.js,Error Handling,Undefined,Server,所以我建立了一个小的基本聊天系统: 服务器代码: var io = require('socket.io').listen(8000); // open the socket connection io.sockets.on('connection', function (socket) { // listen for the chat even. and will recieve // data from the sender. socket.on('chat',

所以我建立了一个小的基本聊天系统:

服务器代码:

    var io = require('socket.io').listen(8000);

// open the socket connection
io.sockets.on('connection', function (socket) {

   // listen for the chat even. and will recieve
   // data from the sender.
   socket.on('chat', function (data) {

      // default value of the name of the sender.
      var sender = 'unregistered';

      // get the name of the sender
      var name = socket.nickname;
         console.log('Chat message by ', name);
         console.log('error ', err);
         sender = name;


      // broadcast data recieved from the sender
      // to others who are connected, but not 
      // from the original sender.
      socket.broadcast.emit('chat', {
         msg : data, 
         msgr : sender
      });
   });

   // listen for user registrations
   // then set the socket nickname to 
   socket.on('register', function (name) {

      // make a nickname paramater for this socket
      // and then set its value to the name recieved
      // from the register even above. and then run
      // the function that follows inside it.
      socket.nickname = name;

         // this kind of emit will send to all! :D
         io.sockets.emit('chat', {
            msg : "naay nag apil2! si " + name + '!', 
            msgr : "mr. server"
      });
   });

});
客户端:

<html>
   <head>
      <script src="http://localhost:8000/socket.io/socket.io.js"></script>
      <script src="http://code.jquery.com/jquery-1.6.2.min.js"></script>
      <script>
         var name = '';
         var socket = io.connect('http://localhost:8000');

         // at document read (runs only ones).
         $(document).ready(function(){
            // on click of the button (jquery thing)
            // the things inside this clause happen only when 
            // the button is clicked.
            $("button").click(function(){

               // just some simple logging
               $("p#log").html('sent message: ' + $("input#msg").val());

               // send message on inputbox to server
               socket.emit('chat', $("input#msg").val() );

               // the server will recieve the message, 
               // then maybe do some processing, then it will 
               // broadcast it again. however, it will not 
               // send it to the original sender. the sender
               // will be the browser that sends the msg. 
               // other browsers listening to the server will
               // recieve the emitted message. therefore we will
               // need to manually print this msg for the sender.
               $("p#data_recieved").append("<br />\r\n" + name + ': ' + $("input#msg").val());

               // then we empty the text on the input box.
               $("input#msg").val('');
            });

            // ask for the name of the user, ask again if no name.
            while (name == '') {
               name = prompt("What's your name?","");
            }

            // send the name to the server, and the server's 
            // register wait will recieve this.
            socket.emit('register', name );
         });

         // listen for chat event and recieve data
         socket.on('chat', function (data) {

            // print data (jquery thing)
            $("p#data_recieved").append("<br />\r\n" + data.msgr + ': ' + data.msg);

            // we log this event for fun :D
            $("p#log").html('got message: ' + data.msg);

         });
      </script>
   </head>
   <body>
      <input type="text" id="msg"></input><button>Click me</button>
      <p id="log"></p>
      <p id="data_recieved"></p>
   </body>
</html>
虽然它工作得很好,但每次我从客户端向服务器传递某个内容时,我都会收到一个: 投掷者;//未处理的“错误”事件


ReferenceError:未定义err。

您需要侦听错误事件,如

socket.on('error', function () {});

您正在调用console.log'error',err,但err没有在任何地方定义。

您需要侦听错误事件,如

socket.on('error', function () {});

您正在调用console.log'error',err,但err没有在任何地方定义。

Hmm您是对的。但是它仍然会使服务器崩溃,即使我定义了它;要捕获错误?For me socket.on'error',函数{};也不行。我已经将“error”重命名为其他名称,现在它可以工作了。是的,它工作得很好。我只是把这个方法放在事件连接的回调函数中。嗯,你说得对。但是它仍然会使服务器崩溃,即使我定义了它;要捕获错误?For me socket.on'error',函数{};也不行。我已经将“error”重命名为其他名称,现在它可以正常工作了。是的,它可以正常工作。我只是将这个方法放在事件连接的回调函数中